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)
Возможно тут нужно убрать коментарии?
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");
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Я хочу создать многомодульный maven-проектОдин модуль - repository - для работы с БД (entity, dao)
Здравствуйте! Разбираясь с этим вопросом, пришел к тому, что мне нужны неблокирующие сокеты
Внедряю альбомную ориентацию в приложение и уже убил пару дней на поиск способа по сохранению состояния вьюшек
Есть строка вида : "09:00 10:07" (она хранится в файле)Мне нужно считать время