Недавно мы начали использовать IdentiyServer 4 (что здорово!).
У нас есть одна служба идентификации, которую используют все остальные службы, обычно с JWT.
Проблема в том, что в случаях, когда токен недействителен (истек или просто неверен), вместо того, чтобы получить ответ 401 (не авторизован), мы просто получаем 500 (внутренняя ошибка сервера).
Я что-то не так делаю?
Я даже пытался использовать их официальный пример кода в качестве нашей службы идентификации, и в итоге получил тот же результат.
Вот соответствующие строки Startup.cs:
ConfigureServices:
services.AddMvcCore()
.AddAuthorization()
.AddJsonFormatters();
Настройка:
app.UseIdentityServerAuthentication(new IdentityServerAuthenticationOptions
{
Authority = Configuration["URLs:IdentityServer"],
RequireHttpsMetadata = false,
ApiName = "api1"
});
Вот исключение:
Произошло необработанное исключение при выполнении запроса
System.InvalidOperationException: не указана схема authenticationScheme, и не найден DefaultChallengeScheme.
Трассировка стека:
в
Microsoft.AspNetCore.Authentication.AuthenticationService.d__11.MoveNext ()
--- Конец стека трассировки из предыдущего места, где было сгенерировано исключение --- в
System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw () в
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification (Task
задача) в
Microsoft.AspNetCore.Mvc.ChallengeResult.d__14.MoveNext ()
(есть еще, но я не думаю, что это актуально)