🔐 Mise en place du SSO
🛠️ Configuration du SSO
Si vous ne souhaitez pas configuré le SSO, passez au chapitre suivant.
📋 Prérequis
Dans cet exemple, j'utilise les briques suivantes :
- VM debian 12 dédiée à Komodo (optionnel)
- Traefik ou un autre reverse-proxy
- Authelia ou un autre IAM
Si vous avez désactivé l'inscription de nouveaux utilisateurs, vous devez réactiver l'option.
(...)
## Disable new user signups.
KOMODO_DISABLE_USER_REGISTRATION=false
(...)
🛠️ Configuration de Komodo
On modifie le compose.yml pour renseigner le client id et le client secret
---
secrets:
komodo_passkey:
file: "./secrets/KOMODO_PASSKEY"
komodo_webkook_secret:
file: "./secrets/KOMODO_WEBHOOK_SECRET"
komodo_jwt_secret:
file: "./secrets/KOMODO_JWT_SECRET"
komodo_oidc_client_id:
file: "./secrets/KOMODO_OIDC_CLIENT_ID"
komodo_oidc_client_secret:
file: "./secrets/KOMODO_OIDC_CLIENT_SECRET"
(...)
core:
image: ghcr.io/moghtech/komodo-core:${COMPOSE_KOMODO_IMAGE_TAG:-latest}
labels:
komodo.skip: # Prevent Komodo from stopping with StopAllContainers
restart: unless-stopped
depends_on:
- ferretdb
secrets:
- "komodo_passkey"
- "komodo_webkook_secret"
- "komodo_jwt_secret"
- "komodo_oidc_client_id"
- "komodo_oidc_client_secret"
logging:
driver: ${COMPOSE_LOGGING_DRIVER:-local}
ports:
- 9120:9120
env_file: ./compose.env
environment:
KOMODO_DATABASE_ADDRESS: ferretdb
KOMODO_PASSKEY_FILE: /run/secrets/komodo_passkey
KOMODO_WEBHOOK_SECRET_FILE: /run/secrets/komodo_webkook_secret
KOMODO_JWT_SECRET_FILE: /run/secrets/komodo_jwt_secret
KOMODO_OIDC_CLIENT_ID_FILE: /run/secrets/komodo_oidc_client_id
KOMODO_OIDC_CLIENT_SECRET_FILE: /run/secrets/komodo_oidc_client_secret
(...)
On passe maintenant à la configuration des variables d'environnement.
(...)
## OIDC Login
KOMODO_OIDC_ENABLED=true
## Must reachable from Komodo Core container
# KOMODO_OIDC_PROVIDER=https://oidc.provider.internal/application/o/komodo
KOMODO_OIDC_PROVIDER=https://iam.domaine.fr
## Change the host to one reachable be reachable by users (optional if it is the same as above).
## DO NOT include the `path` part of the URL.
KOMODO_OIDC_REDIRECT_HOST=https://iam.domaine.fr
## Make usernames the full email.
## Note. This does not work for all OIDC providers.
# KOMODO_OIDC_USE_FULL_EMAIL=true
## Add additional trusted audiences for token claims verification.
## Supports comma separated list, and passing with _FILE (for compose secrets).
# KOMODO_OIDC_ADDITIONAL_AUDIENCES=abc,123 # Alt: KOMODO_OIDC_ADDITIONAL_AUDIENCES_FILE
(...)
Avant de démarrer la stack, il faut paramétrer Authelia.
🛠️ Configuration d'Authelia
# Client ID
docker run authelia/authelia:latest authelia crypto rand --length 64 --charset alphanumeric
Random Value: yOcSAiy0x9YRVCNCABn5b2bNs0D3E8f4ap1LrWJYgNo7XGwfTlymk4SrzUfKyNcT
# Client Secret
docker run authelia/authelia:latest authelia crypto hash generate pbkdf2 --variant sha512 --random --random.length 72 --random.charset rfc3986
Random Password: _y5RqpMYCgl8.ytVJvOcBpx6aeHhdiJ-YG7NGF0Jd4makeeGgpEs3ICMoFkYhlpJ876s09rS # Mot de passe en clair
Digest: $pbkdf2-sha512$310000$JpOwFzbGZl3Fd9S0ZJb04g$p4nj7yhFKn3NzRzyzr0TvbVlFuzWhiaJjTz0HfPeq8/swDNwMXXBv/NRMsgg3agtt80if2YwIUg.0Xa98hRDAQ
Dans la configuration d'Authelia, renseignez le client Komodo :
identity_providers:
oidc:
(...)
clients:
- client_id: 'yOcSAiy0x9YRVCNCABn5b2bNs0D3E8f4ap1LrWJYgNo7XGwfTlymk4SrzUfKyNcT'
client_name: 'Komodo'
client_secret: '$pbkdf2-sha512$310000$JpOwFzbGZl3Fd9S0ZJb04g$p4nj7yhFKn3NzRzyzr0TvbVlFuzWhiaJjTz0HfPeq8/swDNwMXXBv/NRMsgg3agtt80if2YwIUg.0Xa98hRDAQ'
public: false
authorization_policy: 'two_factor'
redirect_uris:
- 'https://komodo.domaine.fr/auth/oidc/callback'
scopes:
- 'openid'
- 'email'
(...)
Concernant Komodo, copiez le client ID et collez-le dans le fichier /srv/docker/komodo/secrets/KOMODO_OIDC_CLIENT_ID
De même, pour le mot de passe en clair du client secret, copiez-le et collez-le dans le fichier /srv/docker/komodo/secrets/KOMODO_OIDC_CLIENT_SECRET
Vous pouvez maintenant relancer la stack Komodo.
🚀 Connexion à Komodo avec OpenIDConnect
Vous remarquerez alors l'apparition du bouton OIDC sur la mire de connexion.

Cliquez dessus et connectez-vous avec votre utilisateur. Une fois authentifié, vous obtiendrez par défaut ce message :

Cela est normal car l'option d'auto-activation des utilisateurs est désactivée dans le compose.env.
(...)
## All new logins are auto enabled
KOMODO_ENABLE_NEW_USERS=false
(...)
Par défaut, je laisse cette option désactivée. Afin d'activer ce nouveau compte, vous devez vous connecter avec le compte admin local créé précédemment puis de vous rendre dans settings > Users.

Dans cet exemple, le nouvel utilisateur se trouve au milieu. Bizarrement, il ne récupère pas le nom d'utilisateur mais son ID. On pourra le modifier plus tard.
On constate également que cet utilisateur est Disabled. Cliquez sur cet user.

À partir de cet interface, vous pouvez alors activier cet utilisateur avec la possibilité d'en faire un admin. Une fois activé, vous pouvez également lui affecter des permissions de manière fine.

Me concernant, j'ai passé mon utilisateur SSO en tant qu'admin. Connectez-vous maintenant avec votre utilisateur. Si comme moi Komodo a récupéré l'ID et non le nom d'utilisateur, rendez-vous alors dans Settings > Profiles et remplacez l'ID par le nom d'utilisateur.
Maintenant que l'authentification centralisée est configurée, passons à l'ajout de serveurs faisant tourner Docker et qui nous permettront de déployer des stacks.