3

我正在使用 ASP.Net MVC3 和 ADFS(使用被动联合)创建单页应用程序 (SPA)。除了我所说的“从 ADFS 重新验证”之外,一切都按预期工作。网站将定期(少于 30 分钟)尝试使用 STS 重新验证用户身份。这很好,但是 Web 应用程序是作为单页面应用程序构建的,因此一旦页面加载,我们就永远不会重新加载页面。此外,重新认证请求通常发生在 ajax 调用期间。

ADFS 具有 WebSSOLifetime 和 TokenLifetime 的默认设置。

有没有办法:a)在后台从javascript静默重新验证用户(也许创造性地使用CORS和/或JSONP)?或 b) 延长重新认证请求之间的时间?或 c) 别的东西。

关于 b) 似乎我可以设置 persistentCookiesOnPassiveRedirects="true" 然后在 cookieHandler 中将 persistentSessionLifetime 设置为所需的值。

<wsFederation persistentCookiesOnPassiveRedirects="true" passiveRedirectEnabled="true" issuer="xxx" realm="yyy" requireHttps="true" />
    <cookieHandler requireSsl="true" persistentSessionLifetime="0.8:0:0" path="/" />

但是,我宁愿不使用持久性 cookie。

最后,我使用了此处描述的 Freshness 设置:如何在与 ADFS 2.0 联合但未成功时正确设置超时。

任何帮助将不胜感激。

4

1 回答 1

2

关于 b),您想要的设置是 Token Lifetime。您可以使用Set-AdfsRelyingPartyTrust PowerShell 脚本更新此值:

Set-AdfsRelyingPartyTrust -TargetName "My App" -TokenLifetime 120

令牌生命周期的值以分钟为单位。AD FS 2.0 的默认值 (0) 是 60 分钟。

至于 a),我知道的唯一方法是捕获 ajax 调用引发的异常并刷新您的单个页面。

于 2012-08-30T18:50:34.503 回答