Mit ASP.NET Core 1.0 (rtm), mit dem etwas minimal verifiable sample, das ich produziert habe, sehe ich, dass die von mir erzeugten JSON Web Tokens nicht sind Leiten der .net Kern json Web-Token Middleware Anspruch Herausforderung, und mit diesem Fehler fehlschlagen:UseJwtBearerAuthentication schlägt mit IDX10504 fehl: Signatur kann nicht geprüft werden, Token hat keine Signatur
Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException:
IDX10504: Unable to validate signature, token does not have a signature:
'... ... token value here...'
ich eine minimale Probe produziert habe, die in ASP.NET Core-RC1 fein gearbeitet, die aber in RTM nicht funktioniert . Ich habe nicht nach RC2 portiert, um zu testen, aber ich glaube, dass ein solcher Test sinnlos ist. Sie können die Demo mit einem bereitgestellten Testskript ausüben:
python tests\testloginapi.py
GET OK: 200 http://localhost:54993/authorize/login?username=TEST&pas...
POST OK: 200 http://localhost:54993/authorize/login?username=TEST&pas...
authorization token received... eyJhbGciOi...
expected status 200 but got 401 for GET http://localhost:54993/authorizetest/test
Auffallende Punkte meiner minimal Beispiel sind:
Startup.cs Methode Configure hat:
app.UseJwtBearerAuthentication(_keyArtifacts.getJwtBearerOptions());
Die Inhaber Optionen sind wie folgt :
public static JwtBearerOptions CreateJwtBearerOption(RsaSecurityKey key, string tokenIssuer, string tokenAudience)
{
var jwtBearerOptions = new JwtBearerOptions();
jwtBearerOptions.AutomaticAuthenticate = true;
jwtBearerOptions.AutomaticChallenge = true;
jwtBearerOptions.TokenValidationParameters.ValidateIssuerSigningKey = true;
jwtBearerOptions.TokenValidationParameters.IssuerSigningKey = key;
jwtBearerOptions.TokenValidationParameters.ValidIssuer = tokenIssuer;
jwtBearerOptions.TokenValidationParameters.ValidateIssuer = true;
jwtBearerOptions.TokenValidationParameters.ValidateLifetime = true;
jwtBearerOptions.TokenValidationParameters.ClockSkew = TimeSpan.Zero;
jwtBearerOptions.TokenValidationParameters.ValidAudience = tokenAudience;
return jwtBearerOptions;
}
Diese Frage wirklich darauf an:
In Asp.net Core 1.0 RTM, was sind die minimalen Schritte zum Erstellen eines Token, das die Middleware-Herausforderung bestehen wird?
Fehle ich einfach einen einfachen Schritt (so wenig wie eine Zeile Code vielleicht), die diese Demo funktionieren würde, einschließlich "signieren" Arbeit haben?
Angesichts der demo ist immer noch ein schreckliches Stück Code, und niemand sollte es jemals in der Produktion verwenden (weil ich mich schon schäme), meine Hoffnung ist diese Frage kann noch aufschlussreich sein, wie zu machen das
UseJwtBearerAuthentication
System funktioniert tatsächlich, zumindest bei einer Demo-Skala.
nützliche Info: https://stormpath.com/blog/token-authentication-asp-net-core –