5

这种情况与 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)

因此预期的结果是:

  1. 用户开始一个新的会话,请求网站
  2. 浏览器重定向到 AD FS,用户输入凭据,浏览器重定向回 Sharepoint 站点,生成 FedAuth cookie
  3. 用户保持空闲 10 分钟(以确保会话滑动期已过)
  4. 用户在 Sharepoint 中请求另一个页面,浏览器被重定向到 AD FS
  5. 由于 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 进行任何更改。

据我了解,我们已经根据文档配置了所有内容,但是我们不能强制用户重新进行身份验证。任何指出配置错误的帮助表示赞赏。

4

1 回答 1

1

抱歉,如果您已经这样做了,但请确保您在进行 websso 更改后重新启动了 AD FS。在我们重新启动服务之前,我们没有得到预期的结果。此外,如果您有代理,也可能需要重新启动它。

您是否有任何正在重写 cookie 的基础架构?

于 2013-07-15T15:19:08.430 回答