来源:https://blog.csdn.net/oscar99...JWT引入JWT的概念JWT,全写成JSONWebToken,是一个开放的行业标准RFC7591,用于实现端到端的安全确认。简单的说,就是通过一些算法在加密字符串和JSON对象之间进行加解密。JWT将JSON加密并保存在客户端,而不会在服务器端保存会话信息,可应用于前后端分离的用户认证。后端对前端输入的用户信息进行加密,生成token字符串。前端再次将这个字符串追加到请求中,后端使用算法解密。JWT流程:JWT组合JWT字符串:加密后的JSON字符串。包含三种类型的信息头:令牌类型和加密算法。常见的加密算法包括MD5、SHA和HMAC(HashMessageAuthenticationCode)。PayLoad加载:存放有效信息,包括标准语句,类似于开发语言的通用关键字。包括iss(Issuser)-发行者subSubject面向对象audAudiencereceiverexpExpirationtimeexpirationtimestampnbfNotBefore,有效时间戳iat(Issuedat)发行时间jti(JWTID):唯一标识公开声明:general添加必要的业务-相关信息。不建议使用敏感信息,因为它可以被解密。privatestatement:提供者和消费者共同定义的声明,Base64对称解密,敏感信息不推荐使用Signaturevisa签证信息由三部分组成:Base64加密headerBase64加密payloadsecret-key使用header中声明的加密算法配对标头和有效负载的加密连接字符串使用加盐秘密组合加密。密钥保存在服务器上,服务器根据密钥进行解密和验证。JWT和开发语言JWT只是一个标准,可以通过各种开发语言来实现,包括Java、.NET、Python、NodeJs、JavaScript、Perl、Ruby、Go等。同一种语言,不同的开发者提供了多种多样的实现库。以Java语言为例,有java-jwt,?jose4j,nimbus-jose-jwt,jjwtJWT官网https://jwt.io/这个网站在线提供了一个基于不同算法的字符串和JSON对象的转换工具,并且还收集了多个不同语言的实现库。java-jwtjava-jwt是Java语言中推荐的JWT实现库,使用Maven导入如下:
