我目前停留在如何在 aspnet5 中实现刷新令牌流的机制上。
目标:我想拦截每笔交易以检查令牌是否已过期或即将过期,如果是,请更新它。(我已经在验证它的签名)。
我发现在设置 JWT 选项时,我可以在 Startup.cs 中发现到期时间:
app.UseJwtBearerAuthentication(options =>
{
options.Audience = "http://localhost:7001";
//options.Authority = "http://localhost:7001";
options.AutomaticAuthenticate = true;
options.RequireHttpsMetadata = false;
options.TokenValidationParameters = new TokenValidationParameters()
{
LifetimeValidator = (DateTime? notBefore, DateTime? expires, SecurityToken securityToken, TokenValidationParameters validationParameters) =>
{
if (expires.Value < DateTime.UtcNow)
{
// it's expired! issue a refresh token here?
return false;
}
return true;
},
IssuerSigningKey = key,
ValidAudience = tokenOptions.Audience,
ValidIssuer = tokenOptions.Issuer,
ValidateSignature = true,
ValidateLifetime = true,
ClockSkew = TimeSpan.FromMinutes(10)
};
});
目前,这只是引发“终身验证器失败”的异常......这就是我所在的地方。
我会以正确的方式解决这个问题吗?这是检查过期的正确位置吗?我如何具体要求 API 从此处发出刷新令牌?