前后端分离单点登录SSO实现方案 淘宝、京东跨域获取Cookie、OAuth2、QQ客户端多种模式


演示Demo站点 http://sso.exrick.cn

前后端分离下单点登录实现

单点登录模式 优点 缺点
共享Cookie模式 简单方便,用户体验好 根域名需限制一致;Cookie可能不安全
OAuth2.0模式 灵活安全,不受站点限制 成本稍高,需独立的认证中心
跨域设置Cookie 用户体验好,不受站点限制 比较麻烦;Cookie可能不安全
客户端模式 用户体验好,不受站点限制 成本极高,依赖于用户本地安装客户端应用

共享Cookie模式【完整版】

  • 首先需进入“系统管理-系统配置”菜单中的“其他配置”设置你应用部署的一级域名,用户登录后将在该域名及子级域名下存储Cookie令牌accessToken用于其他站点获取接口,完整版用户详见xboot-sso项目。
  • 其他站点从Cookie中取出accessTokenCookies.get("accessToken")即可携带上accessToken请求其他接口,通常用于内部信任的站点

OAuth2.0模式

认证中心

  • 即通过平台的独立统一认证站点完成身份认证,其他站点通过获取access_token完成授权以及之后的请求鉴权
    • XBoot统一认证地址: 运行前端,路由地址为/authorize,默认即 http://127.0.0.1:9999/authorize, 在线demo地址 http://xboot.exrick.cn/authorize

单点登录流程分析示例

两三句话就能讲明白的事情,网上的大多资料画再复杂的时序图也讲不清关键点

  • 站点1发现用户未登录时,跳转至认证中心
  • 认证中心发现用户未登录(Cookie中没有认证记录),显示认证中心的登录页面
  • 用户输入账号密码登录,认证成功后,前端记录认证信息保存后端返回的accessToken令牌(令牌中有对应的用户名username),后端Redis存
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
OAuth2 是一种用于授权和认证的开放标准协议。实现单点登录SSO)时,可以使用 OAuth2 来进行前后端分离。 首先,前端和后端需要分别实现相关的功能。 在前端,我们可以使用某个框架(如React、Vue)来开发应用。前端应用会通过浏览器向后端服务器发起请求,获取用户的认证令牌。这个认证令牌可以通过 OAuth2 的授权服务器来颁发。 在后端,我们需要配置一个认证服务器来颁发访问令牌,并提供接口给前端应用进行认证和授权。这个认证服务器可以使用常见的身份认证框架(如Spring Security、Passport.js)来实现。 当用户访问前端应用时,应用会将用户重定向到认证服务器的登录页面。用户在认证服务器上进行登录后,会得到一个授权码。前端应用将这个授权码发送到后端服务器来获取访问令牌。 后端服务器收到授权码后,向认证服务器发送请求,包含授权码和应用的身份验证信息。如果认证服务器验证通过,将会返回一个访问令牌给后端服务器。 后端服务器拿到访问令牌后,可以进行用户信息的验证,并将访问令牌保存在服务器端的会话中,用于后续请求的认证。 当用户访问其他前端应用时,这些应用会重定向到认证服务器进行认证。如果用户已经登录过并且授权令牌仍然有效,认证服务器会直接返回访问令牌给前端应用,无需再次登录。 前后端分离实现 SSO 的优势在于可以实现统一的用户认证和授权机制,提供更好的用户体验和安全性。同时,使用 OAuth2 协议,我们可以灵活地配置和扩展认证服务器,满足不同的业务需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值