我们目前正在开发一个使用ADFS 2.0的SSO项目。作为IDP / CP信托。 w.r.t应用程序设计的基本要求之一是在空闲时段后重新验证用户(可以是任何东西)。经过大量搜索后,我发现只有少数实现(除了SharePoint示例),它们在ADFS服务器中提到WebSSOlifetime and TokenLifeTime设置。我知道WebSSOLifeTime是服务器范围设置(默认值:480),TokenLifeTime是令牌到期时的RP级别设置(默认值0 - 10小时)。为了随机测试设置,我将WebSSOlifetime值更改为5分钟,将TokenLifeTime更改为3分钟,用于我的RP应用程序。但它在5分钟的空闲时间后没有触发重新认证(如WebSSOlifetime中所设置的)。我测试的RP应用程序包括 - Google应用程序 - ADFS集成的SSO和单页应用程序来测试索赔值。如果有人可以发布任何指向ADFS 2.0会话维护功能的相关指针,那就太棒了。
答案 0 :(得分:2)
经过一番汗水我找到了解决方法。 Stackoverflow中的This帖子确实为我提供了一个起点(非常感谢!)。控制IP / STS登录提示的关键参数是新鲜度值(这是Oasis documentation中提到的可选参数)。
当包含在web.config的federatedAuthentication部分中时,此参数(设置为fresh =“0”)将提示IDP根据WCT参数中的当前时间检查令牌的新鲜度值。之后我发现(经过大量测试)TokenLifeTime set通过shell脚本进入画面。此(TokenLifeTime)控制用户在将其重定向到登录屏幕之前可以处于活动状态的时间。
正如您在请求网址中看到的那样:
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 :))。