2017-02-21 68 views
0

我正在保護與身份服務器3的Web應用程序。我的應用程序被分成2個oidc客戶端一個ASP.Net MVC客戶端和一個JavaScript(角色)客戶端,它使用oidc客戶端JavaScript庫。身份服務器3用戶會話終身

當用戶首次訪問Web應用程序時,我們重定向以登錄到身份服務器,該服務器登錄到mvc客戶端。然後,javascript客戶端使用oidc-library中的靜默登錄功能登錄。

我想控制用戶多長時間訪問一次登錄頁面以再次登錄,我想設置此值以便用戶必須每天或每8小時訪問一次登錄頁面。

身份服務器中是否存在一項設置,用於控制用戶會話處於活動狀態的時間長度,而無需再次登錄。

我搜查了文檔,發現了一些終身設置,但它不清楚哪些這些我應該使用,到目前爲止試用&錯誤還沒有產生任何結果。

回答

1

您期望控制的是Identity Identity本身問題的生命週期。一旦這個cookie過期,下一次客戶端應用程序需要再次驗證時,用戶將需要重新輸入他們的憑證。

此cookie的使用期限是在IdentityServerOptions(見下文)的AuthenticationOptions中找到的CookieOption中控制的,默認爲10小時。

var options = new IdentityServerOptions 
{ 
    Factory = factory, 
    SigningCertificate = Cert.Load(), 
    AuthenticationOptions = new AuthenticationOptions 
    { 
     CookieOptions = new IdentityServer3.Core.Configuration.CookieOptions 
     { 
      ExpireTimeSpan = TimeSpan.FromHours(24) 
     } 
    } 
}; 
+0

謝謝。我試圖將超時更改爲2分鐘進行測試,但沒有效果。當我使用chrome進行調試時,我可以看到cookie全部設置爲會話而不是有效期。是否有另一個設置可以改變這種行爲,我可以結合使用。我看過CookieOptions,但沒有什麼突出的? – Twisted

+0

如果你不點擊登錄頁面上的'記住我'按鈕,那麼你會得到一個會話cookie。否則,你會得到一個你說過的一輩子的cookie。爲了解決這個問題,強制你的cookie生存期,在'CookieOptions'中設置'IsPersistent'爲true,'AllowRememberMe'爲false。 –

+0

請查閱https://identityserver.github.io/Documentation/docsv2/configuration/authenticationOptions.html瞭解所有這些選項的完整寫法。 –