Keycloak -Token -Generation von RealmresourceProviderJava

Java-Forum
Anonymous
 Keycloak -Token -Generation von RealmresourceProvider

Post by Anonymous »

Ich versuche, mit RealmresourceProvider ein Token im Schlüsselcloak SPI zu generieren. Einfach wie man ein Token im spi erzeugt. < /P>

Code: Select all

        JsonWebToken token = new JsonWebToken(); // Use base class
token.id(UUID.randomUUID().toString()); // JTI (unique token ID)
token.type(TokenUtil.TOKEN_TYPE_JWT_ACCESS_TOKEN); // Explicitly set type
token.issuer(Urls.realmIssuer(session.getContext().getUri().getBaseUri(), realm.getName())); // ISS (Realm issuer URL)
token.subject(user.getId()); // SUB (User ID)
token.audience(Urls.realmIssuer(session.getContext().getUri().getBaseUri(), realm.getName())); // AUD (Often same as issuer)
token.iat(issuedAtTime); // IAT
token.exp(expirationTime); // EXP
token.nbf(issuedAtTime); // NBF (optional, usually same as iat)

KeyWrapper keyWrapper = session.keys().getActiveKey(realm, KeyUse.SIG, realm.getDefaultSignatureAlgorithm());
if (keyWrapper == null) {
throw new InternalServerErrorException("No active signing key found for realm " + realm.getName());
}
String algorithm = keyWrapper.getAlgorithmOrDefault();
String kid = keyWrapper.getKid();

SignatureProvider signatureProvider = session.getProvider(SignatureProvider.class, algorithm);
if (signatureProvider == null) {
throw new InternalServerErrorException("Signature provider not found for algorithm: " + algorithm);
}
SignatureSignerContext signer = signatureProvider.signer(keyWrapper);

String encodedToken = new JWSBuilder()
.kid(kid)
.type("JWT") // JWS header type
.jsonContent(token) // Set the claims using the JsonWebToken object
.sign(signer); // Sign using the provider and key

return encodedToken;

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post