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
参考文献:
搜索了这个问题的答案后,我找不到任何方法来延长登录用户的超时时间。遗留 .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
参考文献: