- 演示Demo站点 http://sso.exrick.cn
- 开源版Github地址 https://github.com/Exrick/x-boot)
- 开发文档 https://www.kancloud.cn/exrick/xboot/1009234
- 获取完整版 http://xpay.exrick.cn/pay?xboot
演示Demo站点 http://sso.exrick.cn
前后端分离下单点登录实现
单点登录模式 | 优点 | 缺点 |
---|---|---|
共享Cookie模式 | 简单方便,用户体验好 | 根域名需限制一致;Cookie可能不安全 |
OAuth2.0模式 | 灵活安全,不受站点限制 | 成本稍高,需独立的认证中心 |
跨域设置Cookie | 用户体验好,不受站点限制 | 比较麻烦;Cookie可能不安全 |
客户端模式 | 用户体验好,不受站点限制 | 成本极高,依赖于用户本地安装客户端应用 |
共享Cookie模式【完整版】
- 首先需进入“系统管理-系统配置”菜单中的“其他配置”设置你应用部署的一级域名,用户登录后将在该域名及子级域名下存储Cookie令牌
accessToken
用于其他站点获取接口,完整版用户详见xboot-sso
项目。 - 其他站点从Cookie中取出
accessToken
即Cookies.get("accessToken")
即可携带上accessToken
请求其他接口,通常用于内部信任的站点
OAuth2.0模式
认证中心
- 即通过平台的独立统一认证站点完成身份认证,其他站点通过获取access_token完成授权以及之后的请求鉴权
- XBoot统一认证地址: 运行前端,路由地址为
/authorize
,默认即 http://127.0.0.1:9999/authorize, 在线demo地址 http://xboot.exrick.cn/authorize
- XBoot统一认证地址: 运行前端,路由地址为
单点登录流程分析示例
两三句话就能讲明白的事情,网上的大多资料画再复杂的时序图也讲不清关键点
- 站点1发现用户未登录时,跳转至认证中心
- 认证中心发现用户未登录(Cookie中没有认证记录),显示认证中心的登录页面
- 用户输入账号密码登录,认证成功后,前端记录认证信息保存后端返回的accessToken令牌(令牌中有对应的用户名username),后端Redis存