Dans ce tutoriel, je vais vous expliquer comment configurer le SSO sur Gitlab avec un serveur ADFS en utilisant SAML.
Pour rappel, ADFS est un fournisseur d’authentification lié à l’Active Directory, celui-ci permet de mettre en place une authentification unique (SSO) pour l’ensemble des applications configurer dans les services ADFS.
Ce qui permet au utilisateur d’avoir besoin de s’authentifier une seule fois sur la première application et ensuite ils n’auront plus besoin de fournir leurs identifiants pour les autres logiciels qui s’appuie sur ADFS
Configuration de Gitlab pour l’utilisation de SAML
Le but ici est de lié Gitlab à ADFS pour avoir une authentification unique, pour ce tutoriel, j’ai utilisé Gitlab en conteneur avec Docker et j’ai donc déclaré ma configuration ADFS dans mon fichier docker-compose.yml
.
Voici mon fichier docker-compose.yml
Les lignes concernant la configuration d’ADFS vont de la ligne 24 à 39.
Quelques explications :
Activation de l’authentification unique SAML :
gitlab_rails['omniauth_allow_single_sign_on'] = ['saml']
On empêche la création de nouveau utilisateur :
gitlab_rails['omniauth_block_auto_created_users'] = true
Ici c’est un choix personnel, si vous souhaitez qu’à la première connexion un compte soit créé passer la valeur à
false
.Dans le cas où il n’y a pas de création de compte automatique, il faut avant provisionner le compte de l’utilisateur dans Gitlab et indiquer la même adresse e-mail que dans l’Active Directory pour la liaison.
Permet la liaison avec les utilisateurs dans la base de local de Gitlab :
gitlab_rails['omniauth_auto_link_saml_user'] = true
Ensuite on rentre dans le bloc de configuration pour la liaison avec le serveur ADFS :
gitlab_rails['omniauth_providers'] = [{...}]
name
: permert de nommer le fournisseurlabel
: texte qui sera sur le bouton de connexion avec ADFSassertion_consumer_service_url
: point de terminaison du serveur Gitlab, il doit être en HTTPS, adapter le domaine à votre installation en laissant/users/auth/saml/callback
.idp_cert_fingerprint
: l’empreinte du certificat ADFS pour la signature de jetons, elle se trouve dans la console ADFS dans Service / Certificats. On peut l’avoir en affichant le certificat et dans l’onglet Détailsidp_sso_target_url
: url du service d’authentification ADFS, changer seulement le domaine dans le fichier d’exemple.issuer
: l’url de votre Gitlab, elle va permettre à ADFS d’authentifier d’où vient la demande pour envoyer les bonnes revendications.name_identifier_format
: identifiant unique qui va permettre d’authentifier l’utilisateur.
Une fois la configuration effectuée, il faut redémarrer le conteneur avec : sudo docker-compose up -d
.
Si vous êtes dans un autre environnement Gitlab, vous trouvez les équivalents ici.
Configuration de l’approbation de partie de confiance dans ADFS
Pour ce facilité la configuration, on va télécharger un fichier XML pour la configuration, celui ci est disponible sur votre gitlab à l’url suivante (modifier le domaine correspondant à votre environnement) :
https://gitlab.rdr-it.com/users/auth/saml/metadata
Coller le fichier XML sur le serveur.
Dans la console ADFS, aller dans Approbations de partie de confiance 1 et cliquer sur Ajouter une approbation de partie de confiance 2.
Sélectionner Prise en charge des revendications 1 et cliquer sur Démarrer 2.
Choisir Importer les données concernant la partie de confiance à partir d’un fichier 1, aller sélectionner le fichier XML 2 et cliquer sur Suivant 3.
Nommer 1 la partie de confiance et cliquer sur Suivant 2.
Configurer la stratégie d’accès 1 (pour ma part je laisse tout le monde vu que je dois provisionner les comptes) puis cliquer sur Suivant 2.
Un récapitulatif de la configuration est disponible, cliquer sur Suivant 1.
La relation d’approbation est ajoutée, cliquer sur Fermer 1.
Normalement, une autre fenetre s’ouvre pour configurer les revendications, cliquer sur Ajouter une règle 1.
Choisir le modèle : Envoyer les attributs LDAP en tant que revendications 1 et cliquer sur Suivant 2.
Configurer la règle comme sur la capture, ci-dessous, en indiquant le nom de la règle 1, le magasin d’attributs 2, le mappage 3 et cliquer sur Terminer 4 pour ajouter la règle.
On a utilisé deux fois l’adresse email comme revendication, une fois en tant Name ID, comment identifiant unique et l’adresse email qui est nécessaire pour la liaison dans Gitlab.
La règle est ajoutée, cliquer sur Appliquer 1 et OK 2.
C’est terminée, normalement tout devrait fonctionner.
Se connecter à Gitlab avec ADFS
Dernière étape, tester le fonctionnement.
Pour fonctionner, vous devez avoir un compte sur votre Gitlab avec la même adresse email que dans l’Active Directory.
Lancer votre navigateur (en mode privé pour le test c’est mieux) et aller sur votre Gitlab.
Cliquer sur le bouton SSO 1.
Entrer vos identifiants 1 et cliquer sur Connexion 2.
Si tout se passe bien, vous êtes ensuite redirigé vers votre Gitlab et authentifié.