我正在开发一个 abp 项目,我需要为系统时间设置可能不正确的用户处理时间不兼容问题。我尝试通过在我的
AuthServer模块中配置
ClockSkew
来解决此问题,如下所示:
public override void PreConfigureServices(ServiceConfigurationContext context)
{
PreConfigure<OpenIddictBuilder>(builder =>
{
builder.AddValidation(options =>
{
options.AddAudiences("X");
options.UseLocalServer();
options.UseAspNetCore();
options.Configure(opt =>
{
opt.TokenValidationParameters.ClockSkew = new TimeSpan(0, 2, 0, 0);
});
});
});
PreConfigure<OpenIddictServerBuilder>(builder =>
{
builder.SetAuthorizationCodeLifetime(TimeSpan.FromDays(365));
builder.SetAccessTokenLifetime(TimeSpan.FromDays(365));
builder.SetIdentityTokenLifetime(TimeSpan.FromDays(365));
builder.SetRefreshTokenLifetime(TimeSpan.FromDays(365));
});
}
用户可以成功登录AuthServer应用程序。但是,当它们重定向到 Blazor WASM 应用程序时,会显示以下错误消息:“尝试登录时出错”。这表明
ClockSkew
设置未按预期工作。
任何人都可以提供有关如何解决此问题的指导吗?
您需要在接受令牌的客户端或 API 中设置接受的时钟偏差,因为这是在令牌验证期间检查的。
您可以这样设置:
.AddOpenIdConnect(options =>
{
...
options.TokenValidationParameters = new TokenValidationParameters
{
...
ClockSkew = TimeSpan.FromSeconds(3)
};
});