首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JWT:带有公钥/私钥的jwtk/jjwt

JWT:带有公钥/私钥的jwtk/jjwt
EN

Stack Overflow用户
提问于 2016-06-13 14:36:55
回答 1查看 6.2K关注 0票数 9

Auth0提供了两个JWT库,一个用于Node:节点-jsonwebtoken,另一个用于Java:java-jwt事实证明表示java-jwt不支持公钥/私钥对。

然而,另一个java库,jjwt库,声称支持这个特性。但是,文档并没有说明如何在jjwt中使用自己的公钥/私钥对。

我创建了私钥/公钥对,并在Node中成功地使用了节点-jsonwebtoken

代码语言:javascript
复制
var key = fs.readFileSync('private.key');
var pem = fs.readFileSync('public.pem');

var header = {...};
var payload = {...};

header.algorithm = "RS256";
var message = jsonwebtoken.sign(payload, key, header);
var decoded = jsonwebtoken.verify(message, pem, {algorithm: "RS256"});

但是,我没有办法在jjwt的Java中做同样的事情。

任何人都有一个工作示例,说明如何在Java中使用私钥/公钥用于JWT和jjwt

EN

回答 1

Stack Overflow用户

发布于 2016-06-13 17:16:50

以下是我所遵循的

创造钥匙

密钥工具-genkey -keyalg RSA -alias自签名-keystore keystore.jks -storepass密码-validity 360 -keysize 2048

您可以从现有的私钥和公钥创建密钥存储。谷歌它如何做到这一点。

负载基座

代码语言:javascript
复制
    KeyStore ks = KeyStore.getInstance("JKS");
    InputStream readStream = // Use file stream to load from file system or class.getResourceAsStream to load from classpath
    ks.load(readStream, "password".toCharArray());
    Key key = ks.getKey("selfsigned", "password".toCharArray());
    readStream.close();

使用JJwt api对消息签名

代码语言:javascript
复制
String s = Jwts.builder().setSubject("Abc").signWith(SignatureAlgorithm.RS512, key).compact();

使用JJwt api声明消息

代码语言:javascript
复制
X509Certificate certificate = (X509Certificate) keyEntry.getCertificate();
Jwts.parser().setSigningKey(certificate.getPublicKey()).parseClaimsJws(s).getBody().getSubject().equals("Abc");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37792562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档