<script src='b.com/login?uid=xxxx&token=xxxxx'></script>
<script src='c.com/login?uid=xxxx&token=xxxxx'></script

token 驗證

  • 賬戶中心使用私鑰加密 user id,生成 token

  • 子站使用公鑰解密 token,將得到的 user id 和參數 uid 對比,如果一樣就是校驗通過

登出

  1. 用戶在某個子站主動登出時跳轉到賬戶中心統一登出頁 account.com/logout?uid=xxxx&token=xxxx

  2. 賬戶中心驗證 token 后進行登出,在登出跳轉頁中通知各子站進行登出(設置 cookie),類似登錄通知

  3. 子站收到登出請求后驗證 token 是否有效,有效的話在響應中設置 cookie(刪除 user_token)

關鍵點

  • 瀏覽器渲染登錄跳轉頁時將執行上面用 <script> 發送的登錄通知請求,執行完后(或者超時)才跳轉回前面登錄的子站

  • 登錄通知請求是跨域的(當前域是賬戶中心 account.com),所以在響應中設置 cookie 時 IE 某些版本需要設置 P3P 頭

  • 在驗證 token 時可以考慮使用賬戶中心提供高性能的驗證接口,子站進行調用