Мой код выглядит так: < /p>
Код: Выделить всё
import io.smallrye.jwt.algorithm.ContentEncryptionAlgorithm;
import io.smallrye.jwt.algorithm.KeyEncryptionAlgorithm;
import io.smallrye.jwt.build.Jwt;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import org.salesbind.infrastructure.configuration.AuthenticationProperties;
import java.time.Instant;
@ApplicationScoped
public class DefaultAuthenticationTokenManager implements AuthenticationTokenManager {
private final AuthenticationProperties authenticationProperties;
@Inject
public DefaultAuthenticationTokenManager(AuthenticationProperties authenticationProperties) {
this.authenticationProperties = authenticationProperties;
}
@Override
public String createToken(UserPrincipal principal) {
Instant now = Instant.now();
return Jwt.subject(principal.getName())
.issuedAt(now)
.expiresAt(now.plusSeconds(authenticationProperties.expirationSeconds()))
.jwe()
.keyAlgorithm(KeyEncryptionAlgorithm.DIR)
.contentAlgorithm(ContentEncryptionAlgorithm.A256GCM)
.encrypt();
}
}
< /code>
и мой jwk (secret.jwk): < /p>
{
"kty": "oct",
"k": "GJ4z4tlm9bfjnAsNLSzzCnkl_8ajXuY7ar5VrywzID4"
}
< /code>
Когда я запускаю код, я получаю следующую ошибку: < /p>
Caused by: java.lang.IllegalArgumentException: No enum constant io.smallrye.jwt.algorithm.KeyEncryptionAlgorithm.dir
at java.base/java.lang.Enum.valueOf(Enum.java:293)
at io.smallrye.jwt.algorithm.KeyEncryptionAlgorithm.valueOf(KeyEncryptionAlgorithm.java:8)
at io.smallrye.jwt.algorithm.KeyEncryptionAlgorithm.fromAlgorithm(KeyEncryptionAlgorithm.java:37)
at io.smallrye.jwt.build.impl.JwtEncryptionImpl.getEncryptionKeyFromKeyContent(JwtEncryptionImpl.java:280)
at io.smallrye.jwt.build.impl.JwtEncryptionImpl.encrypt(JwtEncryptionImpl.java:89)
smallrye.jwt.encrypt.key.location=classpath:META-INF/secret.jwk
mp.jwt.token.header=Cookie
mp.jwt.token.cookie=AUTH_TOKEN
quarkus.log.level=DEBUG
< /code>
Я пытаюсь создать автономный зашифрованный токен JWT (JWE), используя Smallry jwt в Quarkus. Токен должен: < /p>
быть зашифрованным симметричным ключом (AES-256 GCM). < /Li>
Будьте безопасны для хранения в cookie browser. Ключевое шифрование и контент -интенсивностьрипциилгоритм.A256GCM для шифрования контента. < /li>
< /ul>
Что я пробовал: < /p>
Использование KeyencryptionalLgorithm.dir в коде и «Alg»: «Dir» в JWK. «Alg»: «Dir» в jwk. < /li>
Полное удаление поля «alg» из JWK /> < /ul>
Что на самом деле произошло: < /p>
Код бросает allosalargumentException: enum enmum constant io.smallry.jwt.algorithm.keyencryptionalgorithm.dir. < /li>
< /ul>
Подробнее здесь: https://stackoverflow.com/questions/797 ... g-keyencry