9

Auth0は 2 つの JWT ライブラリを提供します。1 つはノード用: node-jsonwebtoken、もう 1 つは Java 用: java-jwtです。java-jwtは公開鍵と秘密鍵のペアをサポートしていないことが判明しました。

ただし、別の Java ライブラリであるjjwtライブラリは、その機能をサポートしていると主張しています。ただし、ドキュメントには、 jjwtで独自の公開鍵/秘密鍵のペアを使用する方法は示されていません。

秘密鍵と公開鍵のペアを作成し、node-jsonwebtokenを使用して Node で正常に使用しました。

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"});

しかし、Java でjjwtを使用して同じことを行う方法が見つかりませんでした。

Java でjjwtを使用して JWT の秘密鍵/公開鍵を使用する方法の実例はありますか?

4

1 に答える 1

1

これが私がフォローしたものです

キーストアの作成

keytool -genkey -keyalg RSA -alias selfsigned -keystore keystore.jks -storepass password -validity 360 -keysize 2048

既存の秘密鍵と公開鍵からキー ストアを作成できます。やり方はググってください。

キーストアのロード

    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 を使用してメッセージに署名する

String s = Jwts.builder().setSubject("Abc").signWith(SignatureAlgorithm.RS512, key).compact();

JJwt API を使用してメッセージを要求する

X509Certificate certificate = (X509Certificate) keyEntry.getCertificate();
Jwts.parser().setSigningKey(certificate.getPublicKey()).parseClaimsJws(s).getBody().getSubject().equals("Abc");
于 2016-06-13T17:16:50.497 に答える