JWTDecodeException (неверный формат JSON) - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь использовать com.auth0.jwt (3.8.1) для реализации JSON Web Tokens, но это не сработало, как ожидалось. Кодировка работает нормально, но если я пытаюсь проверить закодированный токен, я всегда получаю сообщение об ошибке:

com.auth0.jwt.exceptions.JWTDecodeException: строка '{"typ": "JWT", "alg": "HS256"}' не имеет допустимого формата JSON

даже когда я кодирую в тот же момент (см. Код (function "verify")), поэтому его нельзя изменить между кодированием и проверкой.

Я что-то пропускаю?

Вот токен:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJUZXN0QXV0aCIsImlhdCI6MTU2MjA2MDg4MywiZW1haWwiOiJURVNUQFRFU1RURVNULmRlIn0.A1dSRHLbevqC2lXSJ73kaaiMp7CD_MJCrs9vLBMGvng

package test.jwt;

import java.io.UnsupportedEncodingException;
import org.apache.commons.codec.binary.Base64;
import java.util.Date;

import com.auth0.jwt.*;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.interfaces.DecodedJWT;

public class TestJWT {
  final String SECRET = "sr4mkbbr4wdy45974s94l3squ0wtpf15";



  public String verify(String token) {
    try {
        token = this.encode();   //for testing      
        JWTVerifier verifier = JWT.require(Algorithm.HMAC256(SECRET)).withIssuer("TestAuth").build();

        DecodedJWT jwt = verifier.verify(token);
        return jwt.getClaim("email").asString();
    } catch (Exception ex) {
        ex.printStackTrace();
        return null;
    }
  }

  public String encode() {
    try {

        return JWT.create().withIssuer("TestAuth").withIssuedAt(new Date()).withClaim("email", "TEST@TESTTEST.de").sign(getAlgorithm());
    } catch (Exception ex) {
        ex.printStackTrace();
        return null;
    }

  }

  private Algorithm getAlgorithm() throws UnsupportedEncodingException {
    return Algorithm.HMAC256(SECRET);
  }

}
...