JWT(JSON Web Token):一种基于JSON格式,用于在Web应用中安全传递用户身份验证和授权信息的标准令牌,可以包含签名(JWS)和加密(JWE)的信息
MacAlgorithm(Message Authentication Code Algorithm):消息认证码算法
- HMAC(Hash-based Message Authentication Code):使用SHA-2家族不同长度的散列函数
- HS256:散列长度为256
- HS384:散列长度为384
- HS512:散列长度为512
SignatureAlgorithm:数字签名算法
- RSA(Rivest-Shamir-Adleman):使用SHA-2家族不同长度的散列函数
- RS256:散列长度为256
- RS384:散列长度为384
- RS512:散列长度为512
- RSA-PSS(Probabilistic Signature Scheme):基于RSA,提供了额外的安全属性
- PS256:散列长度为256
- PS384:散列长度为384
- PS512:散列长度为512
- ECDSA(Elliptic Curve Digital Signature Algorithm):椭圆曲线数字签名算法
- ES256:使用P-256曲线和SHA-256哈希算法
- ES384:使用P-384曲线和SHA-384哈希算法
- ES512:使用P-521曲线和SHA-512哈希算法
- EdDSA(Edwards-curve Digital Signature Algorithm):基于Edwards曲线的数字签名算法
组成:头部经过Base64Url编码.载荷经过Base64Url编码.签名
头部(Header):描述JWT的元数据,比如签名算法(HS256)和类型(JWT)
{"alg":"HS256","typ":"JWT"}
载荷(Payload):包含实际的数据,包括签发人、发行时间、到期时间、自定义数据(claims,声明)
{"sub":"1234567890","name":"John Doe","iat":1516239022}
签名(Signature):由前面两部分(Header和Payload的Base64Url编码后的内容)通过预先指定的密钥和签名算法计算而来,用于验证JWT的完整性和真实性
SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
JWT官网:https://jwt.io/
认证流程图
JWS(JSON Web Signature):用于对JWT进行数字签名,保证了数据的完整性
JWE(JSON Web Encryption):用于对JWT载荷内容进行加密保护,保证了数据的隐私性