Пользовательская проверка срока службы с помощью 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», поскольку они нам все равно не понадобятся?

Ответы на вопрос(1)

Ваш ответ на вопрос