无法取得sap单点信息(cookies)_SSO单点登录(test)

fbee78805039b97a7e2a6ad4bbf7bba4.png

单点登录

单点登录全称:Single Sign On(SSO),是指在多系统应用群中登录其中一个系统,便可在其他所有系统中得到授权而无需再次登录。

业务介绍

  • 早期单一服务器的用户认证,单点性能压力,无法扩展

45f690687ae85371254d85b0b18d16cb.png
单一服务器
  • Web应用集群:session共享模式,解决了单点性能瓶颈,问题是,跨顶级域名无法访问,cookie中使用JSESSIONID容易被篡改,盗取

c1e80b98ff8b1b63bf53e0eba697c55a.png
session共享模式
  • 分布式SSO模式:解决跨域,用户身份信息独立管理,更好的分布式管理,可以自己扩展安全策略,缺点就是,认证服务器压力较大

4e011a9c28092360503a9aaeef12cede.png
SSO

SSO简单流程图

d398a8abff33cb9039c55a8aa447f95b.png
SSO

SSO登录流程:

  • 用户访问具体受保护的业务(就是会被拦截的业务)之前,会被拦截器所拦截,这里采用注解式拦截方法(后面说明)。
  • 拦截到认证中心,认证中心只负责两件事(负责token的颁发和对token真伪的验证),如果发现用户没有登录,直接返回到登录页面引导用户进行认证
  • 用户进行登录验证,认证中心调用后台数据库进行验证,验证成功,生成认证token(下面说明生成token),将token存入redis缓存中,实现用户信息的共享。带着token跳转最初的具体业务的地址,如果是带token的跳转,则将token写入Cookie中,并继续打开具体业务功能
  • 用户在获取到认证后的token继续访问其他受保护的业务时,先检查Cookie中是否存在token,如果存在,则继续提交到认证中心验证,认证成功,跳转到具体业务页面

9050c0d20c7836de427c58bb3b0947c4.png
完整流程

认证中心采取这种架构的原因(认证中心独立出来的好处):实现单点登录

用户的登录认证、用户服务 都独立出来,这么做的好处是,在将来扩展其他业务时,只需要在认证中心完成认证,即可完成具体业务功能,还有一个好处是,在分布式系统中会有多个模块,会出现 跨顶级域名(一级域名)认证,为了突破Cookie中JSESSIONID跨域不能共享的这些限制(redis 也可以实现session共享,太过繁琐),需要将认证中心完全独立出来,降低耦合,放弃 session共享的形式,而是直接采用token的形式,用户第一次认证完成后,在浏览器中定义一个token(包含用户信息),访问具体业务模块时,携带这个token,业务模块将浏览器中的token 和Redis中的token进行对比,数据一致代表认证成功,然后就可以访问具体业务,用token 代替JSESSIONID,把session舍弃,token+redis 实现

生成token

  • 生成token 前先进行用户名密码的核对(数据库校验)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值