【问题标题】:ADFS 2.0 Session TimeOut in a SSO scenarioSSO 场景中的 ADFS 2.0 会话超时
【发布时间】:2013-01-22 10:18:28
【问题描述】:
我们目前正在开发一个使用 ADFS 2.0 的 SSO 项目。作为 IDP/CP 信托。 w.r.t 应用程序设计的基本要求之一是在空闲期后重新验证用户(可以是任何东西)。经过广泛搜索后,我发现只有少数实现(除了 SharePoint 示例)涉及 ADFS 服务器中的WebSSOlifetime and TokenLifeTime 设置。我了解 WebSSOLifeTime 是服务器范围的设置(默认值:480),而 TokenLifeTime 是令牌到期的 RP 级别设置(默认值 0 - 10 小时)。为了随机测试设置,我将 RP 应用程序的 WebSSOlifetime 值更改为 5 分钟,将 TokenLifeTime 更改为 3 分钟。但它在 5 分钟的空闲时间(如 WebSSOlifetime 中设置)后没有触发重新身份验证。我测试的 RP 应用程序包括 - Google 应用程序 - ADFS 集成 SSO 和用于测试声明值的单页应用程序。如果有人可以发布任何有关 ADFS 2.0 会话维护功能的指针,那就太好了。
【问题讨论】:
标签:
.net
session
wif
adfs2.0
adfs
【解决方案1】:
经过一番努力,我找到了解决方案。 This Stackoverflow 中的帖子确实为我提供了一个起点(非常感谢!)。控制IP/STS登录提示的关键参数是新鲜度值(这是Oasis documentation中提到的可选参数)。
当包含在 web.config 的 federatedAuthentication 部分中时,此参数(设置为 freshness="0")将提示 IDP 根据 WCT 参数中的当前时间检查令牌的新鲜度值。之后我发现(经过大量测试)TokenLifeTime set 通过 shell 脚本进入画面。这 (TokenLifeTime) 控制用户在将他重定向到登录屏幕之前可以处于活动状态的时间。
正如您在请求 URL 中看到的:
https://XXX/adfs/ls/?wa=wsignin1.0&wtrealm=https%3a%2f%2fXXX%2fXXX&wfresh=0&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fXXX%252fDefault.aspx&wct=2013-02-14T01%3a36%3a17Z
wfresh 和 wctx 值被传递给 IDP 进行验证。
我仍然不确定一切(新鲜度、TokenLifetime 和 WebSSOLifetime)是如何在幕后同步的。关于背景的一个很好的解释会非常有帮助(和of course will add some more reputation :))。