一系统后台下有多个子web后台系统,如:A、B、C,通过登录同一登录SSO(全称Single Sign On)实现所有子系统的。重点是要根据浏览器cookie的特点。
流程说明:
- 当未登录A时,在浏览器中进入A系统界面 www.a.com A系统发现未登录,定向到SSO登录界面 www.sso.com/login?application=A ,输入账号、密码。SSO系统验证正确后设置一个cookie key为:login-cookie,浏览器在www.sso.com域名下就有了一个cookie。然后SSO 定向到 application 对应的token验证URL, www.a.com/check-token。 并带上token参数(此token需要存数据库,以便后来验证):如 www.a.com/check-token?token=b2ce49e4a541068d 。
- A系统在www.a.com/check-token 对应的代码逻辑中获取token参数b2ce49e4a541068d,并请求 www.sso.com/validate-token 将token参数带上,www.sso.com/validate-token 对应代码逻辑验证token 是否为自己之前发设置的token,若是则返回token 所对应的用户名、昵称等,A系统完成登录。
- 当浏览器第一次打开B系统界面www.b.com 时,B系统发现未登录,定向到SSO登录界面www.sso.com/login?application=B,SSO发现在www.sso.com域名下已经有了一个key为login-cookie的cookie,且该cookie有效,则定向到application B所对应的 www.b.com/check-token。 并带上token参数(此token需要存数据库,以便后来验证):如 www.b.com/check-token?token=b4ce49e4a5410123 。
- B系统在www.b.com/check-token 对应的代码逻辑中获取token参数b4ce49e4a5410123,并请求 www.sso.com/validate-token 将token参数带上,www.sso.com/validate-token 对应代码逻辑验证token 是否为自己之前发设置的token,若是则返回token 所对应的用户名、昵称等,B系统完成登录。
暂时记录这些,没有画图说明。以后需要时有个笔记。