2016-06-23 22 views
0

Wir erstellen derzeit eine Sammlung von Back-End ASP.NET Core Microservices. Auf diese Dienste wird nicht direkt über die Front-End-Anwendung zugegriffen, sondern über ein ASP.NET Core API-Gateway. Wir verwenden IdentityServer4 für den OpenID Connect Server. Ich war in der Lage, die UseJwtBearerAuthentication Middleware einzurichten, API-Gateway validieren das JWT Bearer Token (Access_Token) gegen IdentityServer4. Ich würde gerne in der Lage sein, das API-Gateway zu veranlassen, das id_token basierend auf dem access_token in die Anfragen einzutragen, die an die Back-End-Dienste gerichtet sind, die den Endbenutzer kennen müssen.Abrufen von id_token basierend auf access_token in API

Gibt es eine Möglichkeit, die JWT-Middleware zu konfigurieren, um das id_token bei der Validierung des access_token abzurufen, oder muss ich den OpenID Connect-Server im API-Gateway manuell aufrufen?

+0

Warum verwenden Sie nicht access_token anstelle von id_token auf dem Back-End-Dienst (ich frage mich nur). –

Antwort

0

Die JWT-Middleware führt eine Standalone-Verifizierung durch, sie kontaktiert den Identitätsserver nicht, um irgendetwas zu überprüfen oder abzurufen. Sie müssen einen zusätzlichen Anruf tätigen.

+0

Ich weiß nicht, ob das völlig stimmt. Erstens, die JWT-Middleware-Konfiguration übernimmt die URL zur Autorität (in meinem Fall der OpenID Connect-Server). Auch wenn ich meine API mit dem access_token treffe, sehe ich den OpenID Connect Server, der in den Protokollen getroffen wird. Also glaube ich, dass der JWT das access_token bei jeder Anfrage validiert, um zu sehen, ob es noch gültig ist. Es kann immer noch wahr sein, dass ich einen zusätzlichen Anruf tätigen muss, um das id_token abzurufen. – johnmckinzie

+0

Es sieht also so aus, als ob es den OpenID Connect Server trifft, um die Konfiguration zu erhalten, um den Signaturschlüssel zu erhalten. – johnmckinzie

+0

Ah, ja, aber das ist ein einmaliger Download beim Start, es ist nicht pro Anfrage/Token. Es kann auch lokal konfiguriert werden, so dass der Startup-Download nicht benötigt wird. – Tratcher

1

Sie verwenden id_tokens nicht an APIs - sie sind für Clients.

Wenn Sie Zugriff auf bestimmte Identitätsansprüche haben möchten, fügen Sie sie entweder in das Zugriffstoken ein (indem Sie die ScopeClaims für den Ressourcenbereich konfigurieren) oder verwenden Sie das Zugriffstoken, um das Benutzerinfo-Endpoint zu kontaktieren, das die Identität zurückgibt Ansprüche.