UseJwtBearerAuthentifizierungssignaturschlüssel

8

Ich versuche, die JWT-Bearer-Authentifizierung in meiner AspNetCore MVC-Anwendung (nur Web-API) mithilfe der JwtBearerMiddleware zu implementieren, erhalte aber eine 401 -Antwort mit Header:

%Vor%

Der entsprechende Code in Startup.cs sieht folgendermaßen aus:

%Vor%

Mit der Autoritäts-URL würde ich erwarten, dass die Middleware meine Identitätsanbieter-Metadaten von https://example.okta.com/.well-known/openid-configuration abfragt, um die jwks_uri zu erhalten, um dann die Signaturschlüssel von https://example.okta.com/oauth2/v1/keys zu erhalten. Ich glaube nicht, dass das passiert. Was muss ich tun, um die Signaturschlüssel zu finden und zu verwenden? Danke

    
Steve 15.07.2016, 11:03
quelle

1 Antwort

9

Nachdem Sie den Referenzen gefolgt sind und sich in das AspNet Security Repo (speziell die Klassen JwtBearerHandler und JwtBearerMiddleware ) vertieft haben, was dazu geführt hat mich zum Namespace Microsoft.IdentityModel , der sich in einem Azure Extensions Repo (zuerst die Klasse ConfigurationManager<T> , dann die Klasse OpenIdConnectConfigurationRetriever ( GetAsync ), dann die Methode JsonWebKeySet.GetSigningKeys() ), habe ich schließlich festgestellt, dass die JwtBearerMiddleware tatsächlich erhalten wird die Schlüssel von jwks_uri in den Metadaten. Puh.

Warum hat es nicht funktioniert? Was ich vorher hätte überprüfen sollen ist, dass kid in der Kopfzeile des Bearer JWT nicht mit einem der Kid übereinstimmt aus dem jwks_uri , daher wurde es nicht gefunden. Es war der access_code, den ich als Bearer Token gesendet habe. Das id_token hat andererseits ein Kind , das übereinstimmt, also hat das statt dessen funktioniert!

Ich habe seitdem gelesen:

  

Das OIDC Access Token gilt nur für den Okta   / oauth2 / v1 / userinfo Endpunkt und sollte daher als undurchsichtig behandelt werden   die Anwendung. Die Anwendung muss es seither nicht validieren   sollte nicht gegen andere Ressourcenserver verwendet werden. Das Format davon   und der Schlüssel, der verwendet wird, um es zu unterzeichnen, können ohne vorherige Änderung geändert werden   beachten.    Quelle

... so kann ich das Zugriffs-Token nicht benutzen.

    
Steve 16.07.2016, 11:58
quelle