JWT令牌介绍及单点登录SSO

简介

JSON Web Token(JWT)是一个开放的行业标准(RFC 7519),它定义了一种紧凑且独立的方式,用于在各方之间作为JSON对象安全地传输信息。此信息可以通过数字签名进行验证和信任。

解决什么问题

当用户认证后获取到一个JWT令牌,而这个 JWT 令牌包含了用户基本信息,客户端只需要携带JWT访问资源服务器,资源服务器会通过事先约定好的算法进行解析出来,然后直接对 JWT 令牌校验,不需要每次远程请求认证服务器完成授权。

JWT的构成

JWT 有三部分构成:头部、有效载荷、签名
例如:aaaaa.bbbbbb.cccccccc

  • 头部:包含令牌的类型(JWT) 与加密的签名算法((如 SHA256 或 ES256) ,Base64编码后加入第一部分

  • 有效载荷:通俗一点讲就是token中需要携带的信息都将存于此部分,比如:用户id、权限标识等信息。

    • 注:该部分信息任何人都可以读出来,所以添加的信息需要加密才会保证信息的安全性
  • 签名:用于防止 JWT 内容被篡改, 会将头部和有效载荷分别进行Base64编码,编码后用 . 连接组成新的字符串,然后再使用头部声明的签名算法进行签名。在具有秘钥的情况下,可以验证JWT的准确性,是否被篡改。

JWT优缺点

优点

  1. JWT 基于 json,非常方便解析。
  2. 可以在令牌中自定义丰富的内容,易扩展。
  3. 通过非对称加密算法及数字签名技术,JWT 防止篡改,安全性高。
  4. 资源服务器使用 JWT 可以不依赖认证服务器,即可完成授权。

缺点

  1. JWT令牌较长,占存储空间比较大,但是用户信息是有限的,所以在可接受范围。

加密方式

对称加密

对称加密就是同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

非对称加密

非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥privatekey:简称私钥)。公钥与私钥是一对,如果用私钥对数据进行加密,只有用对应的公钥才能解密。

单点登录SSO

单点登录SSO(Single Sign On)说得简单点就是在一个多系统共存的环境下,用户在一处登录后,就不用在其他系统中登录,也就是用户的一次登录能得到其他所有系统的信任。单点登录在大型网站里使用得非常频繁,例如像阿里巴巴这样的网站,在网站的背后是成百上千的子系统,用户一次操作或交易可能涉及到几十个子系统的协作,如果每个子系统都需要用户认证,不仅用户会疯掉,各子系统也会为这种重复认证授权的逻辑搞疯掉。
步骤:

注册客户端信息

  1. 单点登录中, 认证服务器响应的是授权码是重定向到客户端的 /login 端点上, 数据库配置的重写向地址是/login 端点
  2. 单点登录中, 认证授权类型采用的是 授权码模式, 所以authorized_grant_types 指定的授权码模式即可
  3. autoapprove 值为 true 就不会跳转授权页, 自动授权

未完待续。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值