Single Sign On (SSO) 單一登入

Single Sign On (SSO) 單一登入

流程

domain1 SSO 登入

  1. 使用者訪問 domain1.com
  2. domain1.com 沒有找到 session cookie
  3. domain1.com 重新導向到 sso.com 執行登入
  4. sso.com 顯示登入頁及並帶入憑證驗證
  5. 登入後 sso.com 設定使用者的 session cookie
  6. sso.com 重新導向回 domain1.com 的指定登入網址 domain1.com/sso-login
  7. 登入網址 domain1.com/sso-login的參數會含有 sso.com 簽核的 token,可能是個使用金鑰簽核簡單的 base64 加密的登入 id
  8. domain1.com 拿到加密的 token,並解密這個 token,使用新的 登入 id 登入使用者
  9. domain1.com 設定這個使用者的 session cookie

再從 domain2 SSO 登入

  1. 使用者訪問 domain2.com
  2. domain2.com 沒有找到 session cookie
  3. domain2.com 重新導向到 sso.com 執行登入
  4. sso.com 已經有 domain1.com 登入時的 session cookie,所以不需要顯示登入頁
  5. sso.com 重新導向回 domain2.com 的指定登入網址 domain2.com/sso-login
  6. 登入網址 domain2.com/sso-login的參數會含有 sso.com 簽核的 token,可能是個使用金鑰簽核簡單的 base64 加密的登入 id
  7. domain2.com 拿到加密的 token,並解密這個 token,使用新的 登入 id 登入使用者
  8. domain2.com 設定這個使用者的 session cookie

安全性

可定期至 sso.com 檢查是否有登入,確保是有權限的使用者,若沒有登入可以把使用者從原本的 Service Provider 中登出

概念

使用重新導向的瀏覽器 cookie handshake 是 SSO 登入的基本原理

參考資料