Я использую Visual Studio 2015 Enterprise Update 1 и ASP.NET vNext rc1-update1 для выдачи и использования токенов JWT, как описано здесь.
В нашей реализации мы хотим контролировать проверку времени жизни токена.
Мы попробовали несколько подходов, каждый из которых имел нежелательные побочные эффекты. Например, в одной попытке мы переняли событие TokenValidationParameters.TokenValidationParameters.LifetimeValidator в методе Configure:
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?
Можем ли мы заставить ODC не включать определенные пожизненные заявки в токен, такие как «nbf», поскольку они нам все равно не понадобятся?