OpenIddict ClockSkew 配置在 Blazor 应用程序 (WASM) 中不起作用

问题描述 投票:0回答:1

我正在开发一个 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
设置未按预期工作。

任何人都可以提供有关如何解决此问题的指导吗?

blazor openid webassembly abp openiddict
1个回答
0
投票

您需要在接受令牌的客户端或 API 中设置接受的时钟偏差,因为这是在令牌验证期间检查的。

您可以这样设置:

.AddOpenIdConnect(options =>
{
    ...
    options.TokenValidationParameters = new TokenValidationParameters
    {
        ...
        ClockSkew = TimeSpan.FromSeconds(3)
    };
});
© www.soinside.com 2019 - 2024. All rights reserved.