资讯专栏INFORMATION COLUMN

JWT+RSA鉴权

Tecode / 1989人阅读

摘要:一般根据前两步的数据,再加上服务的的密钥不要泄漏,最好周期性更换,通过加密算法生成。非对称加密后的授权和鉴权流程用户只需要与微服务交互,不用访问授权中心,效率大大提高

1)JWT简介

JWT,全称是Json Web Token, 是JSON风格轻量级的授权和身份认证规范,可实现无状态、分布式的Web应用授权;官网:https://jwt.io (JWT,生成Token加密字符串的一个标准或格式!)

image.png

GitHub上jwt的java客户端:https://github.com/jwtk/jjwt

2)JWT数据格式

JWT包含三部分数据:

  • Header:头部,通常头部有两部分信息:

    • 声明类型,这里是JWT
    • 签名算法,自定义

我们会对头部进行base64编码,得到第一部分数据

如图所示:头部是不具备安全性的。

image.png

  • Payload:载荷,就是有效数据,一般包含下面信息:

    • 用户身份信息(注意,这里因为采用base64加密,可解密,因此不要存放敏感信息)
    • tokenID:当前这个JWT的唯一标示
    • 注册声明:如token的签发时间,过期时间,签发人等

这部分也会采用base64加密,得到第二部分数据

如图所示:载荷也不具备安全性。

image.png

  • Signature:签名,是整个数据的认证信息。一般根据前两步的数据,再加上服务的的密钥(secret)(不要泄漏,最好周期性更换),通过加密算法生成。用于验证整个数据完整和可靠性

如果所示:签名中决定整个token是否安全的关键在盐。

image.png

生成的数据格式:

image.png

可以看到分为3段,每段就是上面的一部分数据

登录和鉴权流程:JWT+RSA

有了非对称加密,我们就可以改变签名和验签的方式了:

  • 生成RSA密钥对,私钥存放在授权中心,公钥下发给微服务
  • 在授权中心利用私钥对JWT签名
  • 在微服务利用公钥验证签名有效性

因为非对称加密的特性,不用担心公钥泄漏问题,因为公钥是无法伪造签名的,但要确保私钥的安全和隐秘

非对称加密后的授权和鉴权流程:
image.png

用户只需要与微服务交互,不用访问授权中心,效率大大提高!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/126001.html

相关文章

  • 如何在SpringBoot中集成JWT(JSON Web Token)鉴权

    摘要:在使用非对称加密算法进行签名的时候,还可以用于验证的发件人是否与中申明的发件人是同一个人。如果没有用非对称加密算法的话,把复制之后直接可以去官网在线解析。 这篇博客主要是简单介绍了一下什么是JWT,以及如何在Spring Boot项目中使用JWT(JSON Web Token)。 1.关于JWT 1.1 什么是JWT 老生常谈的开头,我们要用这样一种工具,首先得知道以下几个问题。 这...

    yeyan1996 评论0 收藏0
  • Spring Security

    摘要:框架具有轻便,开源的优点,所以本译见构建用户管理微服务五使用令牌和来实现身份验证往期译见系列文章在账号分享中持续连载,敬请查看在往期译见系列的文章中,我们已经建立了业务逻辑数据访问层和前端控制器但是忽略了对身份进行验证。 重拾后端之Spring Boot(四):使用JWT和Spring Security保护REST API 重拾后端之Spring Boot(一):REST API的搭建...

    keelii 评论0 收藏0
  • 使用JWT(Json Web Token)实现登录认证

    摘要:今天我们来结合实例给大家讲述的实战应用,就是如何使用前端与后端实现用户登录鉴权认证的过程。只用了一个串,建立前后端的验证的数据传递,实现了有效的登录鉴权过程。 今天我们来结合实例给大家讲述JWT(Json Web Token)的实战应用,就是如何使用前端Axios与后端PHP实现用户登录鉴权认证的过程。 文中涉及的重要知识点: axios异步请求:axios-基于Promise的HTT...

    Yu_Huang 评论0 收藏0
  • 关于JWT(Json Web Token)的思考及使用心得

    摘要:什么是是一个开放的数据交换验证标准,一般用来做轻量级的鉴权。由于许多接口设计是遵循无状态的比如,所以是这一套机制的替代方案。组成由三部分组成头部载荷签名。 什么是JWT? JWT(Json Web Token)是一个开放的数据交换验证标准rfc7519(https://tools.ietf.org/html/r...,一般用来做轻量级的API鉴权。由于许多API接口设计是遵循无状态的(...

    taohonghui 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<