In einem katana web api, ich verwende:Guter Algorithmus für die Herunterladen und das Caching öffentlichen Signaturschlüssels für Token-Validierung
appBuilder.UseIdentityServerBearerTokenAuthentication(
new IdentityServerBearerTokenAuthenticationOptions
{
Authority = "https://...",
ValidationMode = ValidationMode.Local,
RequiredScopes = new[] { "..." },
});
Dies scheint den öffentlichen Signaturschlüssel (n) von der Behörde schön zu finden und (hoffentlich?) cache sie, etc. Obwohl ich es nicht ausprobiert habe, verstehe ich, dass es ein Äquivalent für ASP.NET Core gibt.
Jetzt muss ich das gleiche tun, aber nicht in einer Web-API-Middleware. Ich versuche also, den Code zu finden, der von IdentityServer3.AccessTokenValidation.IdentityServerBearerTokenValidationMiddleware verwendet wird. Alles, was ich sehen kann, ist, dass es UseOAuthBearerAuthentication aufruft, was in Microsoft.Owin.Security.OAuth zu sein scheint. Ich konnte keine Version dieses Quellcodes finden, die mit der Signatur übereinstimmt.
Es scheint mir, dass unter den Abdeckungen jemand wahrscheinlich System.IdentityModel.Tokens.JwtSecurityTokenHandler verwendet und ein nettes kleines Code-Snippet in den IssuerSigningKeyResolver der TokenValidationParameters steckt. Dieses nette kleine Snippet erhält die Signaturschlüssel von der Metadatenadresse. Wer weiß, was dieser Code ist, oder ein Stück, das gut funktioniert? Natürlich könnte ich es schreiben, aber ich hasse es, das Rad neu zu erfinden, und meins wäre nicht getestet.