单点登录(SSO)

单点登录概述:
        多系统共存下,用户在一处地方登录,得到其他所有系统的信任,无需再次登录。

        在前端用户点击登陆之后触发后端的登录接口,用户名密码验证通过之后,自动生成一个JWT token令牌并返回给前端,前端将其放到接口的请求头当中,并存储。之后用户访问其他页面时自动从请求头中的Authorization中获取当前用户信息,验证通过用户可以进入,否则提示用户登录。

理解:在前端用户点击登录触发后端登录接口,登录成功的时候,后端jwt生成一个token,后端将token返给前端,前端把token放进需要进行验证的接口的请求头(header)中去,用户带着这个token去进行验证。(token设置过期时间),验证成功则拦截器放行,否则拦截

这里介绍一些jwt基本概念

JWT认证流程


        1.首先,前端通过web表单将自己的用户民和密码发送到后端的接口,这一过程一般是一个HTTP,POST请求。建议的方式是通过SSL加密的方式传输(https协议),从而避免敏感信息被嗅探。


        2.后端核对用户名和密码成功后,将用户的id等其他信息作为JWT Payload(负载),将其与头部分别进行Base64编码拼接后签名,形成一个JWT(token),形成的JWT就是一个形同111.zzz.xxx的字符串, token,head ,payload, singurater


        3.后端将JWT字符串 作为登录成功的返回结果返回给前端,前端可以返回的结果保存在localStorage 或sessionStorage上,退出登录时前端删除保存的JWT即可。


        4.前端在每次请求时将JWT放入HTTP Header中的Authoriztion 位。(放在Header中的原因是解决XSS和XSRF问题) HEADER.


        5.后端检查是否存在,如存在验证JWT的有效性。例如,检查签名是否正确;检查Token是否过期;检查Token的接收方是否是自己(可选)


        6.验证通过后,后端使用JWT包含的用户信息进行其他逻辑操作,返回相应结果。


JWT优势

  • 可以通过URL,POST参数或者在HTTP,header发送 ,因为数据量小,传输速度也很快。
  • 自包含(self-contained): 负载中包含了所有用户所需要的信息,避免了多次查询数据库。
  • 因为Token是以JSON加密的形式保存在客户端的,所以JWT是跨语言的,原则上任何web形式都支持。
  • 不需要在服务端保存会话信息,特别适用于分布式微服务。

JWT结构


令牌组成
        token 其实就相当于一段字符串 ==> token String ==>header.payload.singnature =token
                1.标头(Header)
                2.有效载荷(Payload)
                3.签名(Signature)
因此,JWT通常如下所示:xxxx.yyyy.zzzz

                                      标头 载荷  签名

JWT常见异常信息

  • SignatureVerificationException  签名不一致
  • TokenExpiredException  令牌过期异常
  • AlgorithmMismatchException  算法不匹配异常(也就是解密与加密的算法不一样)
  • InvalidClaimExeption 失效的Payload异常  (就是Payload加解密前后信息不一致)
     
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值