Theme SPI (Service Provider Interface)
Le Theme SPI permet de charger des themes depuis des sources externes (JAR, base de donnees, API). C'est utile pour le multi-tenancy ou un deploiement dynamique.
Creer un Theme Provider custom
public class CustomThemeProviderFactory
implements ThemeProviderFactory {
@Override
public ThemeProvider create(KeycloakSession session) {
return new CustomThemeProvider(session);
}
@Override
public String getId() {
return "custom-theme-provider";
}
}
public class CustomThemeProvider implements ThemeProvider {
@Override
public Theme getTheme(String name, Theme.Type type) {
// Charger le theme depuis une source externe
// ex: base de donnees, API, S3...
return new CustomTheme(name, type);
}
}
Deploiement via JAR
# Packager le theme en JAR
jar cf mon-theme.jar -C themes/ .
# Structure du JAR
META-INF/
keycloak-themes.json
services/
org.keycloak.theme.ThemeProviderFactory
themes/
mon-theme/
login/
...
# keycloak-themes.json
{
"themes": [{
"name": "mon-theme",
"types": ["login", "email", "account"]
}]
}
Deploiement Docker
# Dockerfile
FROM quay.io/keycloak/keycloak:latest
COPY themes/mon-theme /opt/keycloak/themes/mon-theme
# Avec un JAR provider
COPY mon-theme.jar /opt/keycloak/providers/mon-theme.jar
RUN /opt/keycloak/bin/kc.sh build
Messages multilingues
# messages/messages_fr.properties
loginTitle=Bienvenue sur notre plateforme
doLogIn=Se connecter
usernameOrEmail=Identifiant ou email
# messages/messages_en.properties
loginTitle=Welcome to our platform
doLogIn=Sign in
usernameOrEmail=Username or email
Important : Apres chaque modification de theme en production, pensez a vider le cache :
kc.sh build ou redemarrez Keycloak.