天天看點

[譯] IdentityServer3 單點登出

基于 JavaScript 的方式需要用戶端應用加載一個連到在 IdentityServer 中稱為 "check_seesion_iframe" 端點(它的值在中繼資料端點中可以找到)的 <iframe> 。這個 <iframe> (鑒于它是來自 IdentityServer 的源)可以通路到由 IdentityServer 管理的會話 cookie 并且可以偵測使用者登入會話的改變(也就是使用者的登出或者其他使用者登入)。一旦使用者會話發生了改變,那麼托管 <iframe> 的 JavaScript 應用将會得到使用者不再登入到 IdentityServer 的通知。在此階段,接下來該怎麼做就交給了應用,但是應用至少知道使用者的登入狀态已經發生了改變。

"front-channel" 規範采用了另一個方式。它允許用戶端應用使用 IdentityServer 預先注冊一個 "logout URL" 。當使用者登出 IdentityServer ,然後在 IdentityServer 的 "sign out" 頁面上,一個 <iframe> 會渲染用戶端應用注冊的 "logout URL" 。<iframe> 中的請求允許用戶端應用接收在使用者浏覽器會話上下文中使用者已經登出的通知。在這個請求中,用戶端應用可以決定怎麼來清除使用者的會話,常用的方式就是撤銷用戶端應用中的使用者會話 cookie 。

繼續閱讀