Пользовательская проверка срока службы с помощью AspNet.Security.OpenIdConnect.Server (ASP.NET vNext)
Я использую Visual Studio 2015 Enterprise Update 1 и ASP.NET vNext rc1-update1 для выпуска и использования токенов JWT, как описаноВот.
В нашей реализации мы хотим контролировать время жизни токена.
Мы попробовали несколько подходов, каждый из которых имел нежелательные побочные эффекты. Например, в одной из попыток мы переняли событие TokenValidationParameters.TokenValidationParameters.LifetimeValidator вконфигурировать метод:
app.UseJwtBearerAuthentication
(
options =>
{
options.TokenValidationParameters = new TokenValidationParameters()
{
LifetimeValidator = (DateTime? notBefore, DateTime? expires, SecurityToken securityToken, TokenValidationParameters validationParameters) =>
{
// Pretend to do custom validation
return false;
}
};
}
);
Это событие приводит к сбою проверки, как нам хотелось бы, но клиент получает ошибку 500, тогда как вместо этого мы хотим вернуть ошибку серии 400 и небольшую полезную нагрузку.
В другой попытке мы попробовали различные реализации TokenValidationParameters.Events, такие как проверка утверждений в событии ValidatedToken, но обнаружили, что мы не смогли помешать промежуточному программному обеспечению вызвать действие контроллера, за исключением выдачи исключения, которое вернуло нас к проблеме 500 ошибок.
Итак, мои вопросы:
Каковы наилучшие практики для принятия пожизненной проверки с помощью OIDC?
Можем ли мы заставить OIDC не включать в токен некоторые претензии на весь срок службы, такие как «nbf», поскольку они нам все равно не понадобятся?