Session 带有ADFS的单页应用程序-超时问题

Session 带有ADFS的单页应用程序-超时问题,session,timeout,adfs,Session,Timeout,Adfs,我正在使用ASP.NETMVC3和ADFS(使用被动联合)创建一个单页应用程序(SPA)。除了我称之为“来自ADFS的重新身份验证”之外,一切都按预期进行。网站将定期(少于30分钟)尝试使用STS重新验证用户。这很好,但是web应用程序是作为单个页面应用程序构建的,因此我们不会在加载页面后重新加载它。此外,重新验证请求通常在ajax调用期间发生 ADFS具有WebSoliFeTime和TokenLifetime的默认设置 有没有一种方法可以:a)在后台从javascript(可能是创造性地使用C

我正在使用ASP.NETMVC3和ADFS(使用被动联合)创建一个单页应用程序(SPA)。除了我称之为“来自ADFS的重新身份验证”之外,一切都按预期进行。网站将定期(少于30分钟)尝试使用STS重新验证用户。这很好,但是web应用程序是作为单个页面应用程序构建的,因此我们不会在加载页面后重新加载它。此外,重新验证请求通常在ajax调用期间发生

ADFS具有WebSoliFeTime和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

最后,我使用了这里描述的新鲜度设置:没有成功

任何帮助都将不胜感激。

关于b),您需要的设置是令牌生存期。您可以使用PowerShell脚本更新此值:

Set-AdfsRelyingPartyTrust -TargetName "My App" -TokenLifetime 120
令牌生存期的值以分钟为单位。AD FS 2.0的默认值(0)为60分钟


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

谢谢Martin,似乎“a”不是选项,因此我将您的答案标记为正确,因为它确实有助于解决这个问题。