Azure 身份验证 .net MVC 超时设置

Azure authentication .net MVC timeout settings

搜索了这个问题的答案后,我找不到任何方法来延长登录用户的超时时间。遗留 .net 框架项目 4.7,ASP.NET mvc 和 Microsoft.OWIN 包。 登录过程似乎工作正常。 一个小时后,即使在使用该站点时,我也会被重定向到 Microsoft 登录页面。滑动过期什么都不做。 我应该更改哪些设置或技术来使会话持续更长时间?

预期的行为是,通过导航或什至有模式提示继续会话来使用站点,会话将保持活动状态,而不会丢失任何正在进行的重定向。

        public void ConfigureAuth(IAppBuilder app)
    {

        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);

        app.UseCookieAuthentication(new CookieAuthenticationOptions()
        {
            CookieManager = new SystemWebCookieManager(),
            SlidingExpiration = true
        });
        

        app.UseOpenIdConnectAuthentication(
            new OpenIdConnectAuthenticationOptions
            {
                ClientId = clientId,
                Authority = AuthenticationConfig.Authority,
                Scope = $"openid email profile offline_access {graphScopes}",
                RedirectUri = redirectUri,
                PostLogoutRedirectUri = postLogoutRedirectUri,
                TokenValidationParameters = new TokenValidationParameters()
                {
                    ValidateIssuer = true,
                    ValidIssuer = tenant,
   
                    NameClaimType = "name",
                },
                Notifications = new OpenIdConnectAuthenticationNotifications
                {

                    RedirectToIdentityProvider = OnRedirectToIdentityProvider,
                    SecurityTokenValidated = OnSecurityTokenValidated,
                    AuthenticationFailed = OnAuthenticationFailed,
                    AuthorizationCodeReceived = OnAuthorizationCodeReceived
                }
            });
    }

在启动中class尝试使用

Session.Timeout = <value in minutes>;
UseTokenLifetime = false,  //do this for ExpireTimeSpan to be respected
ExpireTimeSpan = TimeSpan.FromMinutes(30);

例如:

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
   {
     ...
     UseTokenLifetime = false,
     ...
   });

如果 SlidingExpiration 设置为 true 。例如,如果用户登录并在 19 分钟后发出第二个请求,则 cookie 将 re-issued 再持续 30 分钟。

尝试更改 web.config 中的会话超时值。例如,<system.web> 命名空间下的 web.config 中的代码。

 <sessionState timeout="<value in minutes>" />

在某些情况下,即使增加会话超时,会话仍会过期。 一些可能的原因可能是。 会话超时应小于应用程序池空闲超时,因此如果增加会话超时,则也必须增加应用程序空闲超时。否则,应用程序将被回收。因此会话将自动过期。 请注意,如果您使用表单身份验证,您还需要在 web.config 中增加表单超时:

<system.web>
     ...
      <authentication mode="Forms">
        <forms timeout="60"/>
      </authentication>

    ...
    </system.web>

如果需要,请勾选Configure token lifetime

参考文献:

  1. configuring-authentication-session-controls
  2. Session-Timeout-Expiration