Core Keycloak library providing fundamental authentication and authorization functionality
npx @tessl/cli install tessl/maven-org-keycloak--keycloak-core@26.2.0Keycloak Core is the fundamental library for authentication and authorization in the Keycloak identity and access management ecosystem. It provides comprehensive JWT token handling, cryptographic operations, OAuth2/OpenID Connect protocol support, and extensive data representation classes for identity management operations.
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-core</artifactId>
<version>26.2.5</version>
</dependency>import org.keycloak.Config;
import org.keycloak.TokenVerifier;
import org.keycloak.KeycloakSecurityContext;
import org.keycloak.AuthorizationContext;
import org.keycloak.representations.AccessToken;
import org.keycloak.representations.IDToken;
import org.keycloak.representations.JsonWebToken;
import org.keycloak.crypto.KeyWrapper;
import org.keycloak.crypto.Algorithm;
import org.keycloak.jose.jwk.JSONWebKeySet;
import org.keycloak.util.TokenUtil;import org.keycloak.TokenVerifier;
import org.keycloak.representations.AccessToken;
import org.keycloak.crypto.KeyWrapper;
import org.keycloak.exceptions.TokenVerificationException;
// Basic token verification
try {
AccessToken token = TokenVerifier.create(tokenString, AccessToken.class)
.withDefaultChecks()
.publicKey(publicKey)
.verify()
.getToken();
String subject = token.getSubject();
String issuer = token.getIssuer();
boolean isActive = token.isActive();
// Access roles and permissions
AccessToken.Access realmAccess = token.getRealmAccess();
if (realmAccess != null && realmAccess.isUserInRole("admin")) {
// Handle admin access
}
} catch (TokenVerificationException e) {
// Handle verification failure
}
// Configuration management
Config.Scope authScope = Config.scope("authentication");
String defaultProvider = authScope.get("defaultProvider", "password");Keycloak Core is built around several key architectural components:
Core JWT token creation, validation, and processing with support for access tokens, ID tokens, refresh tokens, and specialized Keycloak token types.
public class TokenVerifier<T extends JsonWebToken> {
public static <T extends JsonWebToken> TokenVerifier<T> create(String tokenString, Class<T> clazz);
public TokenVerifier<T> withDefaultChecks();
public TokenVerifier<T> publicKey(PublicKey publicKey);
public TokenVerifier<T> secretKey(SecretKey secretKey);
public TokenVerifier<T> audience(String... audience);
public T verify() throws TokenVerificationException;
}Comprehensive cryptographic support for signing, verification, key management, and algorithm abstraction with support for modern cryptographic standards.
public interface SignatureSignerContext {
byte[] sign(byte[] data) throws SignatureException;
String getAlgorithm();
String getKid();
}
public interface SignatureVerifierContext {
boolean verify(byte[] data, byte[] signature) throws SignatureException;
String getAlgorithm();
String getKid();
}
public class KeyWrapper {
public String getKid();
public String getAlgorithm();
public KeyType getType();
public KeyUse getUse();
public KeyStatus getStatus();
public PublicKey getPublicKey();
public SecretKey getSecretKey();
}Complete JSON Object Signing and Encryption implementation including JWS (JSON Web Signature), JWE (JSON Web Encryption), and JWK (JSON Web Key) support.
public class JWSInput {
public JWSHeader getHeader();
public byte[] getContent();
public <T> T readJsonContent(Class<T> type) throws IOException;
public String getEncodedSignatureInput();
public byte[] getSignature();
}
public class JSONWebKeySet {
public List<JWK> getKeys();
public JWK getKeyByKid(String kid);
}Comprehensive token representation classes for OAuth2/OpenID Connect tokens with Keycloak extensions for roles, permissions, and authorization.
public class AccessToken extends JsonWebToken {
public String getScope();
public String getSessionState();
public Access getRealmAccess();
public Map<String, Access> getResourceAccess();
public Authorization getAuthorization();
public static class Access {
public Set<String> getRoles();
public boolean isUserInRole(String role);
}
}
public class IDToken extends JsonWebToken {
public String getName();
public String getGivenName();
public String getFamilyName();
public String getPreferredUsername();
public String getEmail();
public Boolean getEmailVerified();
public AddressClaimSet getAddress();
}Extensive data transfer objects for user management, realm configuration, client settings, roles, groups, and authorization policies.
public class UserRepresentation extends AbstractUserRepresentation {
public String getId();
public String getUsername();
public String getEmail();
public String getFirstName();
public String getLastName();
public Boolean isEnabled();
public Boolean isEmailVerified();
public List<String> getGroups();
public List<String> getRealmRoles();
public Map<String, Object> getAttributes();
}
public class RealmRepresentation {
public String getId();
public String getRealm();
public String getDisplayName();
public Boolean isEnabled();
public List<UserRepresentation> getUsers();
public List<ClientRepresentation> getClients();
public List<RoleRepresentation> getRoles();
}Hierarchical configuration system with scoped property access, type-safe configuration retrieval, and extensible provider architecture.
public class Config {
public static void init();
public static Scope scope(String... scope);
public static String getProvider(String spi);
public static String getAdminRealm();
public interface Scope {
String get(String key);
String get(String key, String defaultValue);
String[] getArray(String key);
Integer getInt(String key);
Integer getInt(String key, Integer defaultValue);
Long getLong(String key);
Long getLong(String key, Long defaultValue);
Boolean getBoolean(String key);
Boolean getBoolean(String key, Boolean defaultValue);
}
}Runtime security context management providing access to authentication state, token information, and authorization decisions.
public class KeycloakSecurityContext {
public AccessToken getToken();
public String getTokenString();
public IDToken getIdToken();
public String getIdTokenString();
public RefreshToken getRefreshToken();
public AuthorizationContext getAuthorizationContext();
public String getRealm();
}
public class AuthorizationContext {
public boolean hasPermission(String resource, String scope);
public boolean hasResourcePermission(String resource);
public boolean hasScopePermission(String scope);
public Collection<Permission> getPermissions();
public boolean isGranted();
}Essential utility functions for token processing, JSON serialization, basic authentication, and common operations.
public class TokenUtil {
public static void attachOIDCScope(MultivaluedMap<String, String> queryParams,
MultivaluedMap<String, String> formParams);
public static boolean isOIDCRequest(String scope);
public static boolean isOfflineTokenRequested(String scope);
public static boolean hasScope(String scopes, String targetScope);
public static RefreshToken getRefreshToken(String refreshToken);
public static boolean isOfflineToken(RefreshToken refreshToken);
// JWE encoding/decoding methods
public static String jweDirectEncode(Object input, String encryptionAlg,
String contentEncAlg, SecretKey encryptionKey);
public static <T> T jweDirectVerifyAndDecode(String jweStr, SecretKey encryptionKey);
}
public class JsonSerialization {
public static String writeValueAsString(Object obj) throws IOException;
public static byte[] writeValueAsBytes(Object obj) throws IOException;
public static <T> T readValue(String json, Class<T> type) throws IOException;
public static <T> T readValue(byte[] json, Class<T> type) throws IOException;
}public enum TokenCategory {
INTERNAL, ACCESS, ID, ADMIN, USERINFO, LOGOUT, AUTHORIZATION_RESPONSE
}
public enum KeyType {
EC, RSA, OCT, OKP
}
public enum KeyUse {
SIG, ENC
}
public enum KeyStatus {
ACTIVE, PASSIVE, DISABLED
}public class TokenVerificationException extends Exception {
public TokenVerificationException(String message);
public TokenVerificationException(String message, Throwable cause);
}
public class TokenNotActiveException extends TokenVerificationException {
public TokenNotActiveException(JsonWebToken token, String message);
}
public class TokenSignatureInvalidException extends TokenVerificationException {
public TokenSignatureInvalidException(JsonWebToken token, String message);
}
public class SignatureException extends Exception {
public SignatureException(String message, Throwable cause);
}public class KeycloakPrincipal<T extends KeycloakSecurityContext> implements Principal {
public String getName();
public T getKeycloakSecurityContext();
}
public abstract class AbstractOAuthClient {
// OAuth client base implementation
}