Итак, у меня есть приложение MVC6, которое включает в себя сервер идентификации (с использованием ThinkTecture IdentityServer3) и приложение веб-служб MVC6.
В приложении веб-служб я использую этот код в Startup:
app.UseOAuthBearerAuthentication(options =>
{
options.Authority = "http://localhost:6418/identity";
options.AutomaticAuthentication = true;
options.Audience = "http://localhost:6418/identity/resources";
});
Затем у меня есть контроллер с действием, имеющим атрибут Authorize
.
У меня есть приложение JavaScript, которое проходит проверку подлинности на сервере идентификации, а затем использует предоставленный токен JWT для доступа к действию веб-служб.
Это работает, и я могу получить доступ только к действию с действительным токеном.
Проблема возникает, когда JWT истек. То, что я получаю, - это то, что кажется сложной страницей ошибок ASP.NET 500, которая возвращает информацию об исключении для следующего исключения:
System.IdentityModel.Tokens.SecurityTokenExpiredException IDX10223: Не удалось проверить срок службы. Срок действия маркера истек.
Я новичок в OAuth и защищаю веб-API в целом, поэтому я могу быть вне базы, но ошибка 500 не кажется мне подходящей для истекшего токена. Это определенно не подходит для клиента веб-сервиса.
Является ли это ожидаемым поведением, а если нет, есть ли что-то, что мне нужно сделать, чтобы получить более подходящий ответ?