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 登入的基本原理

参考资料