SharePoint和SAML:有没有针对重播攻击的警惕?

时间:2013-04-04 13:10:04

标签: security sharepoint saml

SharePoint使用SAML 1.1作为联合身份验证协议。用户将登录到受信任的身份提供程序,并将SAML令牌发布到SharePoint网站,作为登录SharePoint的方法。

我很惊讶地发现SAML令牌的生命周期与用户的会话直接相关。默认情况下,这似乎是10个小时,这似乎很慷慨。

如果我向SharePoint发出SAML令牌,那么哪些警卫可以防止重放攻击?看来这个令牌帖在用户会话的生命周期内是可重放的。我原本期望令牌生命周期足够长,可以进行身份​​验证。我有什么遗漏或这是一个安全漏洞吗?

1 个答案:

答案 0 :(得分:3)

SharePoint中的会话生存期不等于SAML令牌生存期,而是等于SAML令牌ValidTo属性(即绝对日期时间),因此重播将一直有效,直到绝对时间为止。

但不仅如此,SharePoint还依赖于名为LogonTokenCacheExpirationWindow的内部属性(默认为10分钟)。在我看来,它带来了比什么价值更多的混乱,但它存在,你必须明白会话的有效性将取决于那个

在伪代码中,这就是SharePoint内部发生的事情

SessionToken Lifetime = SAML Token Lifetime (by default)
if (SessionToken Lifetime - LogonTokenCacheExpirationWindow < DateTime.UtcNow)
    Logout()

这里有一个例子,LogonTokenExpirationWindow = 40分钟和SAML令牌生命周期1小时。

LogonTokenCacheExpirationWindow可以像这样更改:

$sts = Get-SPSecurityTokenServiceConfig
$sts.LogonTokenCacheExpirationWindow = (New-TimeSpan -minutes 1)
$sts.Update()

SAML令牌生存期(如果您使用ADFS)可以像这样更改:

Set-ADFSRelyingPartyTrust -TargetName "My SP2010" -TokenLifetime 5

最后,值得注意的是SharePoint默认会发出持久性cookie。因此,当您关闭浏览器并再次打开它时,它将使用该持久性cookie。您可以通过设置

来更改它
$sts = Get-SPSecurityTokenServiceConfig
$sts.UseSessionCookies = $true
$sts.Update()
iisreset