这种情况与 Wiktor Zychla 提出的问题非常相似,请参阅如何在与 ADFS 2.0 联合时正确设置超时
我们遇到了相同的行为,ADFS 愉快地将用户重定向回 Sharepoint 站点并重新创建 FedAuth cookie,即使 ADFS 应该提示输入凭据 - 我们希望用户在一段时间的空闲时间后重新进行身份验证。基本上看起来会话总是在滑动。
我们已禁用持久性 cookie,因此当会话通过关闭浏览器结束时会删除 FedAuth cookie,因此在关闭所有浏览器窗口并启动新会话后,用户被迫重新进行身份验证,这样才能正常工作。
据我了解,ADFS 管理单元中的 Web SSO 生命周期设置控制用户需要在 AD FS 上重新进行身份验证的时间(再次输入他的凭据)。Tokenlifetime 和 LogonTokenCacheExpirationWindow 一起控制,Sharepoint 何时应重定向回 AD FS 以更新 FedAuth cookie。
以下是来自http://msdn.microsoft.com/en-us/library/hh446526.aspx的引用:
要强制用户在重定向回 ADFS 时重新输入其凭据,您应该将 ADFS 中的 Web SSO 生命周期设置为小于或等于 SAMLtokenlifetime 减去 LogonTokenCacheExpirationWindow 的值。
所以,我们做了以下工作:
1. 设置 SAML 令牌的生命周期
Add-PSSnapin Microsoft.ADFS.PowerShell
Set-AdfsRelyingPartyTrust –TargetName "[ourrelayingpartytrustreference]" –TokenLifeTime 7
2.设置LogonTokenCacheExpirationWindow(并禁用持久cookie)
Add-PSSnapin Microsoft.SharePoint.Powershell -EA 0
$sts = Get-SPSecurityTokenServiceConfig
$sts.UseSessionCookies = $true
$sts.LogonTokenCacheExpirationWindow = (New-Timespan -Minutes 1)
$sts.Update()
iisreset
3. 调整后的 Web SSO 生命周期:在 AD FS 2.0 管理控制台管理单元中为 5 分钟(在 Powershell 中运行 Get-ADFSProperties 正确返回 SsoLifetime:5)
因此预期的结果是:
- 用户开始一个新的会话,请求网站
- 浏览器重定向到 AD FS,用户输入凭据,浏览器重定向回 Sharepoint 站点,生成 FedAuth cookie
- 用户保持空闲 10 分钟(以确保会话滑动期已过)
- 用户在 Sharepoint 中请求另一个页面,浏览器被重定向到 AD FS
- 由于 Web SSO 生命周期为 5 分钟,并且如 msdn 文档中所述,小于 SAMLtokenlifetime 减去 LogonTokenCacheExpirationWindow 的值(SAMLtokenlifetime - LogontokenCacheExpirationWindow = 6 分钟),AD FS 提示用户输入凭据,用户输入凭据,并且浏览器是重定向到请求的 Sharepoint 页面并重新创建 FedAuth cookie。
当前实际行为(步骤 1-4 类似):
(5.) AD FS 不提示输入凭据,浏览器被重定向到 Sharepoint 页面并重新创建 FedAuth cookie。
所以 - 对我们来说,无论我们做什么,AD FS 会话似乎都不会过期。如果我们创建了将 LogonTokenCacheExpirationWindow 值设置为高于 SAMLtokenlifetime 的错误配置(例如,LogonTokecacheExpirationWindow = 8 和 SAMLtokenlifetime = 7),我们会得到 Sharepoint 和 AD FS 之间循环的预期行为。
如果用户在一段时间内保持空闲状态,我们正在拼命寻找解决方案来正确终止会话。
我们还尝试了以下配置更改(根据http://social.msdn.microsoft.com/Forums/en-US/Geneva/thread/802b1bb6-cda3-4470-a0d1-ee709d5c4b7c/上的指南):
Set-ADFSProperties -SsoLifetime 1
Set-ADFSProperties -ReplayCacheExpirationInterval 1
Set-ADFSProperties -SamlMessageDeliveryWindow 1
尚未对 Global.asax 进行任何更改。
据我了解,我们已经根据文档配置了所有内容,但是我们不能强制用户重新进行身份验证。任何指出配置错误的帮助表示赞赏。