单点登录实现方式

单点登录介绍:

在多个系统的环境下,同一个用户登录后,就不需要在其他系统中再次登录。也就是用户登录一次之后获得所有其他系统的信任。单点登录就是解决如何产生和存储所有系统的信任,再就是怎么验证这个信任的有效性。

  • 如何存储信任凭证?
  • 存储的信任凭证如何得到各个系统的验证?

如何存储信任凭证?

  • 使用cookie作为存储用户的凭证。
    这个实现比较简单,就是将用户的凭证存放在cookie中,
    1.用户通过用户名密码在sso服务进行认证。认证通过返回认证后的凭证
    2.用户通过携带的授权的凭证请求子应用系统。验证通过就认为已经登录成功了。
    这里写图片描述
    优点:
    实现比较简单。所有的认证信息只需要依赖于cookie就可以了。
    缺点:
    1.cookie不是很安全,而且用户禁止cookie后没有办法登录。
    2.不支持跨域实现免密登录。
    3.这种的验证要保证加密算法不被人知道,如果一旦泄露,攻击者就可以通过伪造cookie则可伪造用户身份。

  • 通过jsonp方式回调返回凭证实现。
    这里写图片描述
    使用jsonp的这种方式虽然能解决跨域的问题,但是安全性还是有些问题。加密算法被泄露就会存在问题。只是将存储的验证的加密凭证信息放在了jsonp接口返回的环节。如果用户直接伪造host和用户凭证请求子应用还是会存在风险。

  • 以返回验证后的token值进行校验。
    这里写图片描述

通过sso认证服务和子授权应用反复的重定向来进行验证。现有的大型系统大都是这种设计。
sso认证服务提供一个get方式登录接口。用户通过子应用重定向连接方式访问这个接口。如果用户没有登录成功则跳转到登录页面。如果已经登录生成加密的token令牌,并重定向到子应用提供token验证接口。通过解密校验登录子应用。

优点:
1.既可以处理跨域的问题。
2.还可以解决安全问题。由于所有的信息都在服务端。所以即使知道了加密算法也不能够登录,因为子应用还是会请求认证服务的接口返回的token进行验证。
缺点:项目调用比较复杂。

一般单点登录会用在发布多个应用实例的情况下。也会建立自己的用户中心。如果是后端的话会有用户的授权和用户的信息统一管理。
用户中心不处理业务逻辑,只会处理用户信息的管理以及授权第三方应用,
第三方用户登录时候将请求发送给用户中心认证校验。

用户中心和权限分离

还有就像我们公司会将用户中心和授权分离开来。这个有好处有坏处。好处就是调用端只需要配置到自己的应用相关的拦截。坏处是服务端依赖的都是统一的用户资源都需要进行远程调用。

有技术基础的具体看我的另外一个博文
https://blog.csdn.net/u013642886/article/details/90697541

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青0721松

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值