身份服务器 3 用户会话生命周期
Posted
技术标签:
【中文标题】身份服务器 3 用户会话生命周期【英文标题】:Identity Server 3 User Session Lifetime 【发布时间】:2017-07-10 20:37:49 【问题描述】:我正在使用身份服务器 3 保护 Web 应用程序。我的应用程序分为 2 个 oidc 客户端、一个 ASP.Net MVC 客户端和一个使用 oidc-client javascript 库的 javascript(angular) 客户端。
当用户第一次访问 Web 应用程序时,我们会重定向登录到身份服务器,该身份服务器会登录 mvc 客户端。然后使用 oidc-library 中的静默登录功能登录 javascript 客户端。
我想控制用户访问登录页面以再次登录的频率,我想设置此设置,以便用户必须每天或每 8 小时访问一次登录页面。
身份服务器中是否有一个设置可以控制用户会话的活动时间,而无需再次登录。
我搜索了文档并找到了一些 Lifetime 设置,但不清楚我应该使用哪些设置,到目前为止,反复试验还没有产生任何结果。
【问题讨论】:
【参考方案1】:您希望控制的是 cookie IdentityServer 本身问题的生命周期。一旦此 cookie 过期,下次某个客户端应用程序需要再次进行身份验证时,用户将需要重新输入其凭据。
此 cookie 生命周期由 CookieOption
中的 CookieOption
中的 IdentityServerOptions
(见下文)控制,默认为 10 小时。
var options = new IdentityServerOptions
Factory = factory,
SigningCertificate = Cert.Load(),
AuthenticationOptions = new AuthenticationOptions
CookieOptions = new IdentityServer3.Core.Configuration.CookieOptions
ExpireTimeSpan = TimeSpan.FromHours(24)
;
【讨论】:
谢谢。我尝试将超时更改为 2 分钟以进行测试,但它没有效果。当我在 chrome 中调试时,我可以看到 cookie 都设置为会话而不是过期。是否有另一种设置可以改变我可以结合使用的这种行为。我看过 CookieOptions 但没有什么特别突出的? 如果您不点击登录页面上的“记住我”按钮,您将获得一个会话 cookie。否则你会得到一个你声明的有生命周期的cookie。要解决此问题并强制您的 cookie 生命周期,请在CookieOptions
中将 IsPersistent
设置为 true 并将 AllowRememberMe
设置为 false。
查看identityserver.github.io/Documentation/docsv2/configuration/… 了解所有这些选项的完整说明。
我已经尝试将 IsPersistent 选项与 ExpireTimeSpan 选项结合使用,但没有成功。我没有设置 AllowRememberMe,所以我会试一试,尽管这会控制 cookie 是持久的还是会话的,这似乎很奇怪。该文档暗示 RememberMeDuration 设置与 AllowRememberMe 而不是 ExpireTimeSpan 一起使用以上是关于身份服务器 3 用户会话生命周期的主要内容,如果未能解决你的问题,请参考以下文章