Themes et personnalisation 25 min de lecture

Theme SPI et deploiement avance

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.