我正在使用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设置:How to set the timeout properly when federating with the ADFS 2.0但没有成功。
非常感谢任何帮助。
答案 0 :(得分:2)
关于b),您想要的设置是令牌生命周期。您可以使用Set-AdfsRelyingPartyTrust PowerShell脚本更新此值:
Set-AdfsRelyingPartyTrust -TargetName "My App" -TokenLifetime 120
令牌生命周期的值以分钟为单位。 AD FS 2.0的默认值(0)为60分钟。
至于a),我所知道的唯一方法是捕获ajax调用抛出的异常并刷新单页。