ITicketStore AuthenticationTicket ExpiresUtc值始终为14天

问题描述

我正在创建一个自ITicketStore继承的自定义票务存储,以便将用户令牌存储在数据库中,因为由于保存令牌而使cookie变得太大了。

我已经完成所有设置并可以正常工作,但是,在传递给ExpiresUtc方法的AuthenticationTicket中,我无法将ITicketStore StoreAsync的值设置为14天以外的任何值

看看我的ADFS实例,我将刷新令牌生存期降低到5分钟,将访问令牌生存期降低到2分钟。我仍然无法将正确的值填充到AuthenticationTicket中。

我发现我一旦进入ITicketStore StoreAsync方法就可以手动对其进行更改,但这并不理想,因为如果刷新令牌的生存期要在ADFS上进行更改,则此处将不予考虑

ASP .net核心是否为此设置了自己的价值? ADFS是否在设置值本身并覆盖我的值?可能会发生什么?

STARTUP.CS

    // Authentication / Authorization
    services.AddAuthentication(options =>
    {
        options.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
        options.DefaultChallengeScheme = OpenIdConnectDefaults.AuthenticationScheme;
        options.DefaultAuthenticateScheme = OpenIdConnectDefaults.AuthenticationScheme;
    })
    .AddOpenIdConnect(OpenIdConnectDefaults.AuthenticationScheme,options =>
    {
        options.Authority = Configuration["OpenIdConnect:Authority"];
        options.Resource = Configuration["OpenIdConnect:Resource"];
        options.ClientId = Configuration["OpenIdConnect:ClientId"];
        options.ClientSecret = Configuration["OpenIdConnect:ClientSecret"];

        options.Scope.Clear();
        options.Scope.Add(Configuration["OpenIdConnect:Scopes"]);
        options.SaveTokens = true;
                
        options.ResponseType = OpenIdConnectResponseType.CodeIdToken;
        options.GetClaimsFromUserInfoEndpoint = false;
    })
    .AddCookie(options =>
    {
        options.SessionStore = new CustomTicketStore(services);
    });

CustomTicketStore.CS

public async Task<string> StoreAsync(AuthenticationTicket ticket)

CustomTicketStore基于以下实现:

https://ml-software.ch/posts/implementing-a-custom-iticketstore-for-asp-net-core-identity-update

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)