2016-07-08 5 views
2

jjwt GitHubページhttps://github.com/jwtk/jjwtからすぐ下にあるコードスニッファーが、このトークンを生成して出力します。Java JJWTで生成された署名がjwt.ioデバッガーで失敗する

eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJKb2UifQ.XIKER3owR8BS3Krhsksg9INh9VBSejdn_qN-ONtPans 
String compactJws = Jwts.builder() 
     .setSubject("Joe") 
     .signWith(SignatureAlgorithm.HS256, "secret") 
     .compact(); 
    PrintWriter out = response.getWriter(); 
    out.println(compactJws); 

私はjwt.ioのデバッガにこのトークンを検証しようとすると、しかし、それは署名チェックに失敗。 Both checking and unchecking secret base64 encoded didn't work

ライブラリを誤って使用していますか?

答えて

1

secrで試してみて、base64でオプションをチェック:)

それは.signWith(SignatureAlgorithm.HS256, "secret")によるものです。このメソッドを使用すると、BASE64でキーを提供しているとsecret base64ではないことを前提としていDefaultJwtBuilderクラス

public JwtBuilder signWith(SignatureAlgorithm alg, String base64EncodedSecretKey) 

によって実装されます。この方法は、base64からbyte[]にデコードするときjjwtで使用されるJavaコンバータあなたは

System.out.println(
       javax.xml.bind.DatatypeConverter.printBase64Binary(
         javax.xml.bind.DatatypeConverter.parseBase64Binary("secret"))); 
を自分でテストすることができ jwt.io

で使用するJavaScriptデコーダとは異なる文字列secrの表現を提供します

関連する問題