Produit - GitLab

Contient les procédures et documentations liées à GITLAB

GITLAB - Configuration SSO Oauth avec keycloak

image.png

Difficulté : Confirmé


Notions : Authentification, SSO


I. Introduction

Cette procédure à pour but d'expliquer le paramétrage de l'authentification SSO de Gitlab avec Keycloak.


II. Côté Keycloak

2.1 Créer le client

Se connecter au keycloak et choisir le realm sur lequel ajouter le client Gtilab.

image.png

Cliquer sur 'Create client

image.png

Sélectionner le type 'OpenID Connect'

Générer ou définir un 'clientID'.

Il est possible d'utiliser un générateur afin de générer un e chaîne de 32 caractères. Par exemple : ici.

Best Practice : 32 caractères avec minuscules, majuscules et chiffres.

Choisir un nom parlant.

Puis faire 'Next'.

image.png

Sur la page suivante, activer 'Client authentication' et 'Authorization'.

Vérifier que les cases suivantes sont cochées.

Puis faire 'Next'.

image.png

Entrer les URL au format suivant (en modifiant les FQND).

Puis faire 'Save'.

image.png

2.2 Préparer la synchro des groupes

Afin de pouvoir gérer les droits depuis le keycloak et synchroniser les groupes, aller dans l'onglet 'Client scope'.

Choisir le client scope au nom du client suivi de '-dedicated'.

image.png

Faire 'Add Mapper' puis 'By Configuration'.

image.png

Choisir 'Group Membership'.

image.png

Définir le nom du mapper en 'groups'.

Définir le Token claim name en 'groups'.

Vérifier que les fonctions suivantes soit activées / désactivées.

Puis faire 'Save'.

image.png

2.3 Récupérer les URL

Pour récupérer les URL, sélectionner le realm et faire 'Realm settings' puis cliquer sur 'OpenID Endpoint Configuration'.

image.png

Une page s'affiche et permet de récupérer les URL.

image.png


II. Côté Gitlab

Se connecter en SSH dans le container ou serveur / instance booksack.

Modifier le fichier '/etc/gitlab/gitlab.rb'

Ajouter le code suivant en modifiant les données nécessaires :

gitlab_rails['omniauth_enabled'] = true                                                                     
gitlab_rails['omniauth_allow_single_sign_on'] = ['openid_connect']

gitlab_rails['omniauth_providers'] = [
  {
    name: "openid_connect",
    label: "Login with OAuth",
    args: {
      name: "openid_connect",
      scope: ["openid","profile","email"],
      response_type: "code",
      issuer: "https://auth.labs404.fr/realms/LABS404",
      discovery: true,
      client_auth_method: "query",
      uid_field: "preferred_username",
      pkce: true,
      client_options: {
        identifier: "<Client ID>",
        secret: "<Client Secret>",
        redirect_uri: "https://git.labs404.fr/users/auth/openid_connect/callback",
        gitlab: {
          groups_attribute: "groups",
          admin_groups: ["Admin"]
        }
      }
    }
  }
]

Recharger ensuite la configuration avec la commande :

gitlab-ctl reconfigure

image.png