在Sharepoint 2010会话到期后,用户不必在ADFS 2.0中重新进行身份验证

时间:2013-05-30 10:41:10

标签: authentication sharepoint-2010 session-timeout adfs2.0 federation

此案例与Wiktor Zychla的问题非常相似,请参阅How to set the timeout properly when federating with the 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。
  6. 当前的实际行为(步骤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进行更改。

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

1 个答案:

答案 0 :(得分:1)

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

您是否有任何重写Cookie的基础架构?