Validação de duração personalizada com AspNet.Security.OpenIdConnect.Server (ASP.NET vNext)

Estou usando o Visual Studio 2015 Enterprise Update 1 e o ASP.NET vNext rc1-update1 para emitir e consumir tokens JWT conforme descritoaqui.

Em nossa implementação, queremos controlar a validação da vida útil do token.

Tentamos várias abordagens, todas com efeitos colaterais indesejáveis. Por exemplo, em uma tentativa, assumimos o evento TokenValidationParameters.TokenValidationParameters.LifetimeValidator noConfigurar método:

app.UseJwtBearerAuthentication
(
    options => 
    {
        options.TokenValidationParameters = new TokenValidationParameters()
        {
            LifetimeValidator = (DateTime? notBefore, DateTime? expires, SecurityToken securityToken, TokenValidationParameters validationParameters) =>
            {
                // Pretend to do custom validation
                return false;
            }
        };
    }
);

Esse evento faz com que a validação falhe como gostaríamos, mas o cliente recebe um erro 500, enquanto gostaríamos de retornar um erro da série 400 e uma pequena carga útil.

Em outra tentativa, tentamos várias implementações de TokenValidationParameters.Events, como inspecionar declarações no evento ValidatedToken, mas descobrimos que não conseguimos impedir que o middleware invocasse a ação do controlador antes de lançar uma exceção que nos levou de volta ao problema de erro 500.

Então, minhas perguntas são:

Quais são as melhores práticas para assumir a validação vitalícia com o OIDC?

Podemos forçar o OIDC a não incluir determinadas declarações vitalícias no token como "nbf", pois não precisaremos delas?

questionAnswers(1)

yourAnswerToTheQuestion