Dans ce tutoriel détaillé, vous apprendrez à automatiser totalement la construction et la publication d’une image Docker fonctionnelle d’Apereo CAS avec support OAuth2 et OpenID Connect (OIDC), à l’aide d’une pipeline GitLab CI/CD.
Table of Contents
Qu’est-ce que Apereo CAS ?
Apereo CAS est une solution open source permettant de centraliser l’authentification unique (SSO – Single Sign-On) pour vos applications.
Avantages principaux :
- Authentification unique (SSO)
- Support OAuth2, OpenID Connect (OIDC), SAML
- Authentification LDAP
- Haute sécurité et personnalisation facile
Objectifs de ce tutoriel
Nous allons :
- Créer une image Docker d’Apereo CAS à partir du template officiel
- Ajouter dynamiquement les modules nécessaires (LDAP, Redis, OAuth2, OIDC)
- Construire et publier l’image avec un pipeline GitLab CI/CD
Prérequis
- GitLab avec accès CI/CD
- Docker installé sur les runners GitLab
- Registre Docker (ex : GitLab Registry, Docker Hub)
- Accès internet pour récupérer les dépendances Maven
Détail des modules utilisés
Module | Description |
---|---|
webapp-tomcat | Serveur Tomcat embarqué |
support-json-service-registry | Déclaration des services CAS via fichiers JSON |
support-ldap | Authentification des utilisateurs via LDAP |
support-surrogate-authentication-ldap | Authentification de substitution via LDAP |
support-oauth-webflow | Fournisseur OAuth2 |
support-redis-ticket-registry | Stockage des tickets CAS dans Redis |
support-bootadmin-client | Supervision via Spring Boot Admin |
support-oidc | Fournisseur OpenID Connect |
Exemple complet du fichier .gitlab-ci.yml
Voici un exemple complet, optimisé et prêt à l’emploi :
stages:
- build
variables:
IMAGE_NAME: ${CI_PROJECT_PATH}
CAS_VERSION: "6.6.7"
CAS_BRANCH: "6.6"
CAS_MODULES: "support-json-service-registry,support-ldap,support-surrogate-authentication-ldap,support-oauth-webflow,support-redis-ticket-registry,support-bootadmin-client,support-oidc"
DOCKER_REGISTRY_HOST: "votre-registre-docker.example.org"
docker-build:
image: gradle:jdk11
stage: build
script:
# Clonage du projet officiel CAS Overlay
- git clone --branch ${CAS_BRANCH} https://github.com/apereo/cas-overlay-template.git overlay
- cd overlay
# Mise à jour de la version CAS
- sed -i "s/^cas.version=.*/cas.version=${CAS_VERSION}/" gradle.properties
# Injection dynamique des modules CAS nécessaires
- echo "// --- Modules CAS additionnels ---" >> build.gradle
- echo "dependencies {" >> build.gradle
- |
for mod in $(echo ${CAS_MODULES} | tr ',' ' '); do
echo " implementation \"org.apereo.cas:cas-server-${mod}:\${project.'cas.version'}\"" >> build.gradle
done
- echo "}" >> build.gradle
# Build et push Docker via Jib
- export DOCKER_TAG="v${CAS_VERSION}"
- |
./gradlew jib \
-Djib.to.image=${DOCKER_REGISTRY_HOST}/${IMAGE_NAME}:${DOCKER_TAG} \
-Djib.to.auth.username=${CI_REGISTRY_USER} \
-Djib.to.auth.password=${CI_REGISTRY_PASSWORD} \
-PprivateRepoUrl=https://repo.maven.apache.org/maven2/ \
--info
# Export de l'image référence pour les jobs suivants
- echo "IMAGE_REF=${DOCKER_REGISTRY_HOST}/${IMAGE_NAME}:${DOCKER_TAG}" > ../deploy.env
artifacts:
reports:
dotenv: deploy.env
Explication des principales variables
Variable | Description | Exemple |
---|---|---|
CAS_VERSION | Version de CAS à construire | 6.6.7 |
CAS_BRANCH | Branche du projet CAS Overlay | 6.6 |
CAS_MODULES | Liste des modules CAS | Voir ci-dessus |
DOCKER_REGISTRY_HOST | Hôte de votre registre Docker | registry.example.org |
CI_REGISTRY_USER et CI_REGISTRY_PASSWORD | Variables GitLab pour authentification au registre | définies dans GitLab |
Bonnes pratiques pour améliorer la performance
- Utiliser le cache Gradle pour accélérer les builds ultérieurs :
cache:
key: ${CAS_VERSION}
paths:
- .gradle/
- Protéger les identifiants Docker en définissant les variables GitLab comme « protégées ».
- Suivre les mises à jour du projet CAS Overlay régulièrement pour appliquer les correctifs de sécurité.
Conclusion
Avec ce pipeline CI/CD complet et optimisé, vous pouvez construire et publier en toute sécurité une image Docker d’Apereo CAS intégrant l’authentification LDAP, la gestion OAuth2/OIDC, et un stockage performant Redis.
Ce processus automatique réduit le temps de déploiement et garantit un serveur CAS fiable et personnalisable pour vos projets SSO.