Используя ASP.NET Core 1.0 (rtm), с некоторым количеством minimal verifiable sample, которое я создал, я вижу, что ящики JSON Web Tokens I, минуя ядро .net JSON веб-маркер промежуточного претензии вызов, и терпят неудачу с этой ошибкой:Использование ошибки JwtBearerAuthentication с IDX10504: Не удалось проверить подпись, токен не имеет подписи
Microsoft.IdentityModel.Tokens.SecurityTokenInvalidSignatureException:
IDX10504: Unable to validate signature, token does not have a signature:
'... ... token value here...'
Я произвел минимальный образец, который работал хорошо в ASP.NET ядра RC1, но не работает в RTM , Я не поступил на RC2 для тестирования, но я считаю, что такой тест бессмыслен. Вы можете воспользоваться демо с предоставленного сценария тестирования:
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
Заметные точки моего минимального примера:
метод Startup.cs Настройка имеет:
app.UseJwtBearerAuthentication(_keyArtifacts.getJwtBearerOptions());
Варианты на предъявителя, как это :
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;
}
Этот вопрос действительно сводится к:
В Asp.net core 1.0 rtm, каковы минимальные шаги для создания токена, который пройдет мимо промежуточного вызова?
Я просто пропустил какой-то простой шаг (возможно, хотя бы одну строку кода), что сделало бы эту демонстрационную работу, в том числе «подписью» работы?
Учитывая, что demo по-прежнему является ужасным фрагментом кода, и никто не должен его использовать в производстве (потому что я уже стыжусь этого), я надеюсь, что этот вопрос все еще может быть освещен относительно того, как сделать система
UseJwtBearerAuthentication
действительно работает, по крайней мере, в демонстрационной шкале.
Полезная информация: https://stormpath.com/blog/token-authentication-asp-net-core –