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?