2012-06-18 11 views
3

我正在用ASP.Net MVC3和ADFS(使用被動聯合)創建單頁應用程序(SPA)。除了我將稱之爲「ADFS重新認證」外,一切都按預期工作。定期(不到30分鐘),網站將嘗試使用STS重新驗證用戶身份。這樣可以,但是Web應用程序是作爲單個頁面應用程序構建的,所以我們在加載頁面時不會重新加載頁面。此外,重新認證請求通常在ajax調用期間發生。帶ADFS的單頁應用程序 - 超時問題

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。

最後,我玩過這裏描述的新鮮度設置:How to set the timeout properly when federating with the ADFS 2.0沒有成功。

任何幫助將不勝感激。

回答

1

關於b),您需要的設置是令牌生命週期。您可以使用Set-AdfsRelyingPartyTrust PowerShell腳本更新此值:

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

令牌生命週期的值以分鐘爲單位。 AD FS 2.0的默認值(0)是60分鐘。

至於a),我所知道的唯一方法是捕獲由ajax調用引發的異常並刷新您的單個頁面。

+0

謝謝馬丁,看起來「a」不是一種選擇,所以我將你的答案標記爲正確,因爲它確實有助於解決問題。 –