<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 时可以考虑使用账户中心提供高性能的验证接口,子站进行调用