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();
}
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)
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.