Генерация токена для Apple Music на java

328
09 августа 2017, 18:31
private static String createJWT(String id, String issuer, String subject, long ttlMillis) throws Exception{
  //The JWT signature algorithm we will be using to sign the token
    SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.ES256;
    long nowMillis = System.currentTimeMillis();
    Date now = new Date(nowMillis);
    //We will sign our JWT with our ApiKey secret
    byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary("-----BEGIN PRIVATE KEY-----" +
            "MIGTAsvdfbghtjt7877thbfnhtjnQQgJ0rty4umJhdYywE+L54YO0yp+T/JY5ajhqn1hUps6JqgCgYIKoZIzj0DAQehRANCAATRR3JOoF9nh7iCESC7/4Yv9DZ4juKZfEuoAVGBtdbh9bQrxzGGAmEQg8M/x3IHZrIvgc2+yfomkSApnTQlKrkR" +
            "-----END PRIVATE KEY-----");
    Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName());

    //Let's set the JWT Claims
    JwtBuilder builder = Jwts.builder().setId(id)
            .setIssuedAt(now)
            .setSubject(subject)
            .setIssuer(issuer)
            .signWith(signatureAlgorithm, signingKey);
    //if it has been specified, let's add the expiration
    if (ttlMillis >= 0) {
        long expMillis = nowMillis + ttlMillis;
        Date exp = new Date(expMillis);
        builder.setExpiration(exp);
    }
    //Builds the JWT and serializes it to a compact, URL-safe string
    return builder.compact();
}

При генерации токена получаю ошибку:

Exception in thread "main" java.lang.IllegalArgumentException: Elliptic Curve signatures must be computed using an ECPrivateKey.  The specified key of type javax.crypto.spec.SecretKeySpec is not an ECPrivateKey.
    at io.jsonwebtoken.impl.crypto.EllipticCurveSigner.<init>(EllipticCurveSigner.java:34)
    at io.jsonwebtoken.impl.crypto.DefaultSignerFactory.createSigner(DefaultSignerFactory.java:47)
    at io.jsonwebtoken.impl.crypto.DefaultJwtSigner.<init>(DefaultJwtSigner.java:37)
    at io.jsonwebtoken.impl.crypto.DefaultJwtSigner.<init>(DefaultJwtSigner.java:32)
    at io.jsonwebtoken.impl.DefaultJwtBuilder.createSigner(DefaultJwtBuilder.java:339)
    at io.jsonwebtoken.impl.DefaultJwtBuilder.compact(DefaultJwtBuilder.java:321)
Answer 1

Возможно тут нужно убрать коментарии?

byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary("-----BEGIN PRIVATE KEY-----" +
            "MIGTAsvdfbghtjt7877thbfnhtjnQQgJ0rty4umJhdYywE+L54YO0yp+T/JY5ajhqn1hUps6JqgCgYIKoZIzj0DAQehRANCAATRR3JOoF9nh7iCESC7/4Yv9DZ4juKZfEuoAVGBtdbh9bQrxzGGAmEQg8M/x3IHZrIvgc2+yfomkSApnTQlKrkR" +
            "-----END PRIVATE KEY-----");

И оставить только ключ?

byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary("MIGTAsvdfbghtjt7877thbfnhtjnQQgJ0rty4umJhdYywE+L54YO0yp+T/JY5ajhqn1hUps6JqgCgYIKoZIzj0DAQehRANCAATRR3JOoF9nh7iCESC7/4Yv9DZ4juKZfEuoAVGBtdbh9bQrxzGGAmEQg8M/x3IHZrIvgc2+yfomkSApnTQlKrkR");
READ ALSO
Структура maven проекта и git репозитория

Структура maven проекта и git репозитория

Я хочу создать многомодульный maven-проектОдин модуль - repository - для работы с БД (entity, dao)

425
NIO DatagramSocket в Android. Не получаю ответа или 0

NIO DatagramSocket в Android. Не получаю ответа или 0

Здравствуйте! Разбираясь с этим вопросом, пришел к тому, что мне нужны неблокирующие сокеты

316
Сохранение состояния View с помощью Icepick

Сохранение состояния View с помощью Icepick

Внедряю альбомную ориентацию в приложение и уже убил пару дней на поиск способа по сохранению состояния вьюшек

305
Как преобразовать строку во время?

Как преобразовать строку во время?

Есть строка вида : "09:00 10:07" (она хранится в файле)Мне нужно считать время

345