SharePoint使用SAML 1.1作为联合身份验证协议。用户将登录到受信任的身份提供程序,并将SAML令牌发布到SharePoint网站,作为登录SharePoint的方法。
我很惊讶地发现SAML令牌的生命周期与用户的会话直接相关。默认情况下,这似乎是10个小时,这似乎很慷慨。
如果我向SharePoint发出SAML令牌,那么哪些警卫可以防止重放攻击?看来这个令牌帖在用户会话的生命周期内是可重放的。我原本期望令牌生命周期足够长,可以进行身份验证。我有什么遗漏或这是一个安全漏洞吗?
答案 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