or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

constants-configuration.mdcore-functionality.mdcrypto-utilities.mdenums-types.mdindex.mdprofile-management.mdreflection-utilities.mdutility-functions.md
tile.json

tessl/maven-org-keycloak--keycloak-common

Common library and dependencies shared with server and all adapters for the Keycloak identity and access management system

Workspace
tessl
Visibility
Public
Created
Last updated
Describes
mavenpkg:maven/org.keycloak/keycloak-common@26.2.x

To install, run

npx @tessl/cli install tessl/maven-org-keycloak--keycloak-common@26.2.0

index.mddocs/

Keycloak Common Library

The Keycloak Common Library provides foundational utilities, constants, and shared functionality for the Keycloak identity and access management system. This library serves as the core foundation used across Keycloak server and all client adapters, providing cryptographic utilities, profile management, networking tools, and extensive utility functions.

Package Information

  • Package Name: keycloak-common
  • Package Type: maven
  • Group ID: org.keycloak
  • Artifact ID: keycloak-common
  • Language: Java
  • Version: 26.2.5
  • License: Apache-2.0
  • Minimum Java Version: Java 8+

Core Imports

Maven dependency:

<dependency>
    <groupId>org.keycloak</groupId>
    <artifactId>keycloak-common</artifactId>
    <version>26.2.5</version>
</dependency>

Common Java imports:

// Core functionality
import org.keycloak.common.Profile;
import org.keycloak.common.Version;
import org.keycloak.common.ClientConnection;
import org.keycloak.common.VerificationException;

// Constants
import org.keycloak.common.constants.GenericConstants;
import org.keycloak.common.constants.KerberosConstants;
import org.keycloak.common.constants.ServiceAccountConstants;

// Cryptographic utilities
import org.keycloak.common.crypto.CryptoIntegration;
import org.keycloak.common.crypto.CryptoProvider;
import org.keycloak.common.crypto.FipsMode;

// Enums
import org.keycloak.common.enums.SslRequired;
import org.keycloak.common.enums.HostnameVerificationPolicy;

// Profile management
import org.keycloak.common.profile.ProfileConfigResolver;
import org.keycloak.common.profile.PropertiesProfileConfigResolver;

// Utilities
import org.keycloak.common.util.Base64;
import org.keycloak.common.util.MultivaluedMap;
import org.keycloak.common.util.KeycloakUriBuilder;

// Reflection utilities
import org.keycloak.common.util.reflections.Reflections;
import org.keycloak.common.util.reflections.Types;

Basic Usage

Feature Profile Management

import org.keycloak.common.Profile;
import org.keycloak.common.Profile.Feature;

// Configure and check features
Profile profile = Profile.defaults();
boolean authzEnabled = Profile.isFeatureEnabled(Feature.AUTHORIZATION);

// Get all enabled features
Set<Feature> allFeatures = profile.getAllFeatures();
Set<Feature> previewFeatures = profile.getPreviewFeatures();

Version Information

import org.keycloak.common.Version;

// Get version information
String version = Version.VERSION;
String buildTime = Version.BUILD_TIME;
String name = Version.NAME; // "Keycloak"

Cryptographic Operations

import org.keycloak.common.crypto.CryptoIntegration;
import org.keycloak.common.crypto.CryptoProvider;
import org.keycloak.common.crypto.FipsMode;

// Initialize crypto provider
CryptoIntegration.init(ClassLoader.getSystemClassLoader());
CryptoProvider provider = CryptoIntegration.getProvider();

// Check FIPS mode
FipsMode fipsMode = FipsMode.DISABLED;
boolean isFipsEnabled = fipsMode.isFipsEnabled();

Architecture

The Keycloak Common Library is organized into seven main packages:

  • org.keycloak.common: Core classes including Profile, Version, ClientConnection
  • org.keycloak.common.constants: Configuration constants and protocol definitions
  • org.keycloak.common.crypto: Cryptographic providers and utilities
  • org.keycloak.common.enums: Configuration enums and policy types
  • org.keycloak.common.profile: Feature flag and profile management
  • org.keycloak.common.util: Extensive utility classes for common operations
  • org.keycloak.common.util.reflections: Advanced reflection utilities

Capabilities

Core Functionality

Core classes for profile management, version information, client connections, and verification.

// Feature profile management
public class Profile {
    public static Profile getInstance();
    public static boolean isFeatureEnabled(Feature feature);
    public Set<Feature> getAllFeatures();
    public ProfileName getName();
}

// Version information
public class Version {
    public static final String VERSION;
    public static final String BUILD_TIME;
    public static final String NAME;
}

// Client connection information
public interface ClientConnection {
    String getRemoteAddr();
    String getRemoteHost();
    int getRemotePort();
    String getLocalAddr();
    int getLocalPort();
}

Core Functionality

Constants and Configuration

Comprehensive set of constants for Kerberos, service accounts, and generic configuration.

// Generic constants
public class GenericConstants {
    public static final String PROTOCOL_CLASSPATH = "classpath:";
}

// Kerberos constants
public class KerberosConstants {
    public static final String NEGOTIATE = "Negotiate";
    public static final Oid SPNEGO_OID;
    public static final String KERBEROS_REALM = "kerberosRealm";
}

// Service account constants
public interface ServiceAccountConstants {
    String CLIENT_AUTH = "client_auth";
    String SERVICE_ACCOUNT_USER_PREFIX = "service-account-";
}

Constants and Configuration

Cryptographic Utilities

Complete cryptographic abstraction layer supporting both FIPS and non-FIPS modes.

// Crypto integration
public class CryptoIntegration {
    public static void init(ClassLoader classLoader);
    public static CryptoProvider getProvider();
    public static void setProvider(CryptoProvider provider);
}

// Crypto provider interface
public interface CryptoProvider {
    Provider getBouncyCastleProvider();
    <T> T getAlgorithmProvider(Class<T> clazz, String algorithm);
    CertificateUtilsProvider getCertificateUtils();
    KeyPairGenerator getKeyPairGen(String algorithm);
}

// FIPS mode configuration
public enum FipsMode {
    NON_STRICT, STRICT, DISABLED;
    boolean isFipsEnabled();
}

Cryptographic Utilities

Enums and Types

Configuration enums for SSL requirements, hostname verification, and API versioning.

// SSL requirement levels
public enum SslRequired {
    ALL, EXTERNAL, NONE;
    boolean isRequired(ClientConnection connection);
    boolean isRequired(String host);
}

// Hostname verification policies
public enum HostnameVerificationPolicy {
    ANY, WILDCARD, STRICT, DEFAULT;
}

// Account API versions
public enum AccountRestApiVersion {
    V1_ALPHA1("v1alpha1");
    String getStrVersion();
}

Enums and Types

Profile Management

Advanced feature flag management with resolvers and configuration options.

// Profile configuration resolver
public interface ProfileConfigResolver {
    Profile.ProfileName getProfileName();
    FeatureConfig getFeatureConfig(String feature);
}

// Properties-based resolver
public class PropertiesProfileConfigResolver implements ProfileConfigResolver {
    public PropertiesProfileConfigResolver(Properties properties);
    public static String getPropertyKey(Feature feature);
}

// Comma-separated list resolver
public class CommaSeparatedListProfileConfigResolver implements ProfileConfigResolver {
    public CommaSeparatedListProfileConfigResolver(String enabledFeatures, String disabledFeatures);
}

Profile Management

Utility Functions

Extensive collection of utility classes for encoding, networking, I/O, and data manipulation.

// Base64 encoding utilities
public class Base64 {
    public static String encodeBytes(byte[] source);
    public static String encodeObject(Serializable serializableObject);
    public static void encode(ByteBuffer raw, ByteBuffer encoded);
}

// Multivalued map interface
public interface MultivaluedMap<K, V> extends Map<K, List<V>> {
    void putSingle(K key, V value);
    void add(K key, V value);
    V getFirst(K key);
    List<V> getList(K key);
}

// URI builder for Keycloak
public class KeycloakUriBuilder {
    public static KeycloakUriBuilder fromUri(String uriTemplate);
    public KeycloakUriBuilder path(String segment);
    public URI build(Object... values);
}

Utility Functions

Reflection Utilities

Advanced reflection capabilities for type resolution, method invocation, and annotation handling.

// Comprehensive reflection utilities
public class Reflections {
    public static <T> T cast(Object obj);
    public static Set<Field> getAllDeclaredFields(Class<?> clazz);
    public static Method findDeclaredMethod(Class<?> clazz, String name, Class<?>... args);
    public static Object invokeMethod(Method method, Object instance, Object... args);
    public static <T> Class<T> getRawType(Type type);
}

// Type resolution utilities
public class Types {
    public static Type boxedType(Type type);
    public static Class<?> getRawType(Type type);
    public static Type resolveTypeVariables(Class<?> root, Type type);
    public static Class getCollectionBaseType(Class type, Type genericType);
}

Reflection Utilities

Exception Types

// Verification exception for crypto operations
public class VerificationException extends Exception {
    public VerificationException();
    public VerificationException(String message);
    public VerificationException(String message, Throwable cause);
    public VerificationException(Throwable cause);
}

// Profile-related exceptions
public class ProfileException extends RuntimeException {
    public ProfileException(String message);
    public ProfileException(String message, Throwable cause);
}

// PEM utility exceptions
public class PemException extends Exception {
    public PemException();
    public PemException(String message);
    public PemException(String message, Throwable cause);
    public PemException(Throwable cause);
}