依赖包
1 | <dependency> |
nimbus-jose-jwt 使用例子
https://connect2id.com/products/nimbus-jose-jwt/examples/jwt-with-rsa-signature
Jws
JSON Web Signature
对JWT进行签名。给内容加签名的作用前面已经说过了
- 防止JWT内容被篡改,确保内容的完整性
- 可以验证该JWT确实签发自当前server
JwsUtils 工具类
1 | import com.nimbusds.jose.JOSEException; |
JwsUtilsTest 测试类
1 | import com.nimbusds.jose.JOSEException; |
Jwe
JWS是利用签名保证数据内容不会被篡改,但是最终的base64解码之后还是可以看到payload其中的内容。就实际运用中来说,我们的JWT中一般不存放铭感信息。如果搭配OAuth2.0来的话,可能有scope等内容,但其实这些内容被解码之后对我们的影响也几乎没有。
不过,如果想对payload的内容加密,使得数据不会被解码出来,那么这时候就需要JWE-JSON Web Encryption。
这里再提醒一下:
- Jws是对内容进行签名但是不加密
- Jwe是对内容进行加密但是不签名
- Jws 和 Jwe 可以结合使用,先签名再加密,然后先解密再验证签名
JweUtils 工具类
1 | import com.nimbusds.jose.EncryptionMethod; |
JweUtilsTest 测试类
1 | import com.nimbusds.jose.EncryptionMethod; |