Die Quarkus-Smallrye-JWT-Signaturmethode stürzt ab, wenn der Schlüssel aus dem Kubernetes-Geheimnis gelesen wirdJava

Java-Forum
Guest
 Die Quarkus-Smallrye-JWT-Signaturmethode stürzt ab, wenn der Schlüssel aus dem Kubernetes-Geheimnis gelesen wird

Post by Guest »

Ich möchte JWT-Tokens in meiner Quarkus-Rest-App signieren und validieren. Die privaten und öffentlichen Schlüssel sollten als Kubernetes-Geheimnisse gespeichert werden.
Was ich bisher gemacht habe:
  • Schlüssel erstellen

Code: Select all

openssl genrsa -out keypair.pem 2048
openssl rsa -in keypair.pem -pubout -out publickey.crt
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in keypair.pem -out pkcs8.key
  • Kubernetes-Geheimnis erstellen

Code: Select all

kubectl create secret generic jwt-keys -n my-namespace --from-file=privkey=pkcs8.key --from-file=pubkey=publickey.crt
  • application.properties bearbeiten

Code: Select all

quarkus.kubernetes-config.secrets=jwt-keys
mp.jwt.sign.key=jwt-keys.privkey
mp.jwt.verify.publickey=jwt-keys.pubkey
smallrye.jwt.sign.key=jwt-keys.privkey
  • Versuchen Sie, ein Token zu signieren

Code: Select all

    private String createToken(Role role) {
long now = Instant.now().getEpochSecond();
long exp = now + TimeUnit.MINUTES.toSeconds(60);
return Jwt.issuer(issuer)
.claim(Claims.groups, role)
.issuedAt(Instant.ofEpochSecond(now))
.expiresAt(Instant.ofEpochSecond(exp))
.sign();
}
Verhalten, wenn ich die Methode createToken aufrufe:

Code: Select all

io.smallrye.jwt.build.JwtSignatureException: SRJWT05009:
at io.smallrye.jwt.build.impl.JwtSignatureImpl.sign(JwtSignatureImpl.java:109)
at de.infinityq.auth.TokenManager.createToken(TokenManager.java:21)
at de.infinityq.auth.TokenManager.createUserToken(TokenManager.java:29)ethod:
.
.
.
.
.
Caused by: java.lang.IllegalArgumentException: SRJWT05028: Signing key can not be created from the loaded content
at io.smallrye.jwt.build.impl.JwtSignatureImpl.sign(JwtSignatureImpl.java:102)

Die Sign-Funktion stürzt also ab, wenn ich versuche, den Schlüssel zu laden, den ich im Kubernetes-Geheimnis definiert habe, aber ich verstehe nicht warum.
Das habe ich überprüft Die Schlüssel sind gültig, indem sie direkt als Dateien übergeben werden, wie im Beispiel hier gezeigt: https://quarkus.io/guides/security-jwt#token-decryption
Ich habe überprüft, dass meine Der Ansatz sollte funktionieren, indem Sie die Smallrye-Dokumentation lesen: https://smallrye.io/docs/smallrye-jwt/generate-jwt.html, wo eindeutig angegeben ist, dass ich den Schlüssel als Wert übergeben kann
Ich weiß nicht, was ich sonst tun soll , hoffe, jemand kann helfen.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post