В моем веб-приложении я хочу выполнить все проверки времени жизни по умолчанию (не раньше, истекает, ...), а также выполнить еще одну проверку (время жизни <2 часа). </p>
Сначала я попробовал это:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, o => {
o.TokenValidationParameters = new TokenValidationParameters()
{
ValidateLifetime = true,
LifetimeValidator = (DateTime? notBefore, DateTime? expires, SecurityToken securityToken, TokenValidationParameters validationParameters) => {
// --> my custom check <--
}
};
});
Это выполнит мою пользовательскую проверку, но пропустит реализацию по умолчанию, поэтому все обычные проверки (не раньше, не истекает, ...) больше не выполняются.
Затем я вызываю реализацию по умолчанию из моего обработчика, например:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme, o => {
o.TokenValidationParameters = new TokenValidationParameters()
{
ValidateLifetime = true,
LifetimeValidator = (DateTime? notBefore, DateTime? expires, SecurityToken securityToken, TokenValidationParameters validationParameters) => {
Microsoft.IdentityModel.Tokens.Validators.ValidateLifetime(notBefore, expires, securityToken, validationParameters);
// --> my custom check <--
}
};
});
Но это будет рекурсивно вызывать мой обработчик и, в конечном итоге, вылетать из приложения.
Так что ... как правильно продлить валидатор времени жизни по умолчанию?