Aller au contenu principal

Configuration Keycloak

config.json
{
"oidc_providers": {
"keycloak": {
"display_name": "Sign in with keycloak",
"provider_url": "https://keycloak.example.com/realms/master",
"client_id": "***",
"client_secret": "***",
"redirect_url": "https://semaphore.example.com/api/auth/oidc/keycloak/redirect"
}
}
}

Rôles de projet à partir des groupes Enterprise​

Pour utiliser les mappages de groupe, ajoutez un mapper qui place les groupes de l'utilisateur dans le jeton d'identité :

  1. Dans la Keycloak Admin Console, ouvrez votre client, allez dans Client scopes et ouvrez le scope <client-id>-dedicated.
  2. Ajoutez un mapper By configuration et choisissez Group Membership.
  3. Donnez à Token Claim Name la valeur groups et activez Add to ID token.
  4. Choisissez comment envoyer les groupes avec Full group path. Si l'option est activée, Keycloak envoie le chemin de chaque groupe, par exemple /devops ou /platform/sre, et le mappage de groupe doit utiliser ce chemin. Si elle est désactivée, Keycloak envoie seulement le nom du groupe, par exemple sre.

Définissez ensuite groups_claim pour le fournisseur :

config.json
{
"oidc_providers": {
"keycloak": {
"...": "...",
"groups_claim": "groups"
}
}
}

N'ajoutez pas groups à scopes. Keycloak refuse un scope qu'il ne connaît pas, et le mapper n'a besoin d'aucun scope supplémentaire.

Connexion initiée par l'IdP​

Pour permettre aux utilisateurs de lancer Semaphore depuis le lanceur d'applications de la console de compte (Account Console) de Keycloak, activez la connexion initiée par l'IdP pour le fournisseur :

config.json
{
"oidc_providers": {
"keycloak": {
"...": "...",
"allow_idp_initiated": true
}
}
}

Ensuite, dans la console d'administration de Keycloak, ouvrez votre client et définissez la Home URL (Keycloak ≥ 19 ; les versions plus anciennes l'appellent Base URL) à :

https://semaphore.example.com/api/auth/oidc/keycloak/initiate

Lorsqu'un utilisateur clique sur l'application dans le lanceur, Keycloak redirige vers cette URL avec le paramètre iss. Semaphore valide iss par rapport à votre provider_url (l'issuer du realm) et démarre un flux Authorization Code classique.

  • #2308 — Comment désactiver la validation du certificat pour le serveur Keycloak
  • #2314 — Option pour désactiver la vérification TLS
  • #1496 — Se déconnecter de la session Keycloak lors de la déconnexion de Semaphore

Voir toutes les issues liées à Keycloak →

  • #1745 — Le nom d'utilisateur diffère de preferred_username dans OpenID
  • #1030 — Prise en charge de SAML ?

Voir toutes les discussions liées à Keycloak →