Lorsque vous utilisez un IdP pour IAM sur GitHub Enterprise Server, SAML SSO contrôle et sécurise l'accès aux ressources de l'entreprise telles que les référentiels, les issues et les requêtes de tirage. SCIM crée automatiquement des comptes d'utilisateurs et gère l'accès à votre entreprise lorsque vous apportez des modifications à votre IdP. Vous pouvez également synchroniser les équipes sur GitHub avec les groupes sur votre IdP. Pour plus d’informations, consultez À propos de l’approvisionnement d’utilisateurs avec SCIM sur GitHub Enterprise Server.
Vue d’ensemble
Ce guide vous aide à configurer l’authentification SAML et l’approvisionnement SCIM pour GitHub sur PingFederate.
Avant de commencer, notez les points suivants :
- L’utilisation de PingFederate en tant qu’IdP pour GitHub Enterprise Server est proposée en préversion publique. Contactez l’équipe de votre compte pour fournir des commentaires.
- Ce guide est basé sur PingFederate version 12.1. Les instructions peuvent varier pour d’autres versions.
- Ce guide fournit les étapes minimales pour mettre en place une configuration fonctionnelle. Étant donné que votre répertoire d’identité peut être connecté à PingFederate différemment, vous devez choisir les attributs de données appropriés pour SAML et SCIM en fonction de ce qui est disponible à partir de votre magasin de données de sauvegarde.
Prérequis
Les conditions générales d'utilisation de SCIM sur GitHub Enterprise Server s'appliquent. Consultez la section « Conditions préalables » dans Configuration du provisionnement SCIM pour gérer les utilisateurs.
De plus :
- Pour configurer SCIM, vous devez avoir effectué les étapes 1 à 4 dans Configuration du provisionnement SCIM pour gérer les utilisateurs.
- Vous aurez besoin du personal access token (classic) créé pour l’utilisateur de configuration afin d’authentifier les requêtes envoyées depuis PingFederate.
- Vous devez avoir installé le « connecteur GITHUB UEM » sur PingFederate. Pour télécharger et installer le connecteur, consultez Installer le provisionneur dans la documentation PingIdentity.
- Pour approvisionner des utilisateurs avec SCIM, vous devez utiliser un serveur LDAP comme magasin de données de stockage.
- Il peut être nécessaire de configurer le pare-feu dans PingFederate afin d’autoriser les connexions sortantes vers le point de terminaison
https://HOSTNAME/api/v3/scim/v2de votre instance GitHub Enterprise Server. - Le « mode d’approvisionnement » de PingFederate doit être défini sur une valeur qui autorise l’approvisionnement SCIM. Consultez la section « Avant de commencer » dans le guide Paramètres d’approvisionnement sortant de PingIdentity.
- Au cours de cette procédure, vous devez charger un certificat X509 sur PingFederate. Vous pouvez créer et stocker le certificat avant de continuer. Vous aurez également besoin du mot de passe de défi pour le certificat. Consultez la section Exemple de création d’un certificat X509 plus loin dans cet article.
1. Configuration de SAML
Dans cette section, vous allez créer un connecteur SAML dans PingFederate, configurer une instance d’adaptateur IdP LDAP et gérer la sortie SAML à partir de votre adaptateur IdP.
-
[Créer un adaptateur SAML](#create-a-saml-adapter) -
[Configurer une instance d’adaptateur IdP LDAP](#set-up-an-ldap-idp-adapter-instance) -
[Gérer la sortie SAML à partir de votre adaptateur IdP](#manage-saml-output-from-your-idp-adapter)
Avant de commencer cette section, vérifiez que vous avez suivi les étapes 1 et 2 dans Configuration du provisionnement SCIM pour gérer les utilisateurs.
Créer un adaptateur SAML
-
Ouvrez la console d’administration PingFederate.
-
Cliquez sur Applications dans l’en-tête, puis sur Connexions SP dans la barre latérale gauche.
-
Cliquez sur Utilisez un modèle pour cette connexion, puis sélectionnez le « connecteur GITHUB UEM » dans la liste déroulante « Modèle de connexion ».
Remarque
Si vous ne voyez pas cette option, le connecteur GITHUB UEM n'a pas été installé. Si vous avez besoin d’aide, contactez votre représentant Ping.
-
Pour remplir certains champs dans la configuration de PingFederate, vous allez charger un fichier XML contenant des métadonnées SAML pour votre entreprise.
- Dans un nouvel onglet, connectez-vous à GitHub en tant qu’utilisateur de configuration intégré.
Accédez à votre page de métadonnées SAML à
https://HOSTNAME/saml/metadata. - Téléchargez la page en tant que fichier XML.
- Dans un nouvel onglet, connectez-vous à GitHub en tant qu’utilisateur de configuration intégré.
Accédez à votre page de métadonnées SAML à
-
Sur la page PingFederate « Connexion SP », chargez le fichier à partir de l’étape précédente en tant que fichier de métadonnées. Veillez à le faire dans les 5 minutes suivant le téléchargement du fichier.
-
Accédez à l’onglet « Type de connexion ».
-
Sélectionnez Profils SSO du navigateur et désélectionnez Approvisionnement sortant (cette option sera activée ultérieurement).
-
Cliquez sur Suivant.
-
Sous l’onglet « Options de connexion », vérifiez que seul SSO du navigateur est sélectionné.
-
Cliquez sur Suivant.
-
Dans l’onglet « Informations générales », saisissez les détails suivants.
- « ID d’entité du partenaire » : votre URL hôte GitHub (
https://HOSTNAME.com) - « Nom de la connexion » : nom descriptif de votre connexion SP dans PingFederate
- « URL de base » : URL de l'hôte de votre GitHub (
https://HOSTNAME.com) - « Journalisation des transactions » : standard
- Tous les autres champs peuvent rester vides.
- « ID d’entité du partenaire » : votre URL hôte GitHub (
-
Cliquez sur Suivant.
-
Cliquez sur Configurer SSO du navigateur.
-
Cliquez sur Configurer la création d’assertions.
-
Sous l’onglet « Mappage de source d’authentification », cliquez sur Mapper une nouvelle instance d’adaptateur.
-
Sous l’onglet « Instance d’adaptateur », cliquez sur Gérer les instances d’adaptateur.
-
Cliquez sur Créer une nouvelle instance.
Configurer une instance d’adaptateur IdP LDAP
-
Dans la page « Créer une instance d’adaptateur » de PingFederate, sous l’onglet « Type », saisissez les détails suivants.
- « Nom de l’instance » : nom permettant d’identifier l’instance, par exemple
pfghadapter - « ID de l’instance » : ID de l’instance, par exemple
pfghadapter - « Type » : adaptateur IDP de formulaire HTML
- « Instance parent » : aucune
- « Nom de l’instance » : nom permettant d’identifier l’instance, par exemple
-
Cliquez sur Suivant.
-
Sous l’onglet « Adaptateur IDP », en bas de la page, cliquez sur Gérer les validateurs d’informations d’identification du mot de passe.
-
Cliquez sur Créer une nouvelle instance.
-
Dans l’onglet « Type », saisissez les informations suivantes.
- « Nom de l’instance » : nom permettant d’identifier l’instance, par exemple
pfghdocscv - « ID de l’instance » : ID de l’instance, par exemple
pfghdocscv - « Type » : validateur d’informations d’identification du mot de passe du nom d’utilisateur LDAP
- « Instance parent » : aucune
- « Nom de l’instance » : nom permettant d’identifier l’instance, par exemple
-
Cliquez sur Suivant.
-
Dans l’onglet « Configuration de l’instance », cliquez sur Gérer les magasins de données.
-
Cliquez sur Ajouter un nouveau magasin de données.
-
Dans l’onglet « Type de magasin de données », saisissez les informations suivantes.
- « Nom de l’instance » : toute valeur unique, telle que
pfghdocsds - « Type » : annuaire (LDAP)
- « Masquer les valeurs dans le journal » : désélectionné
- « Nom de l’instance » : toute valeur unique, telle que
-
Cliquez sur Suivant.
-
Dans l’onglet « Configuration LDAP », configurez les détails de votre serveur LDAP.
-
Cliquez sur Tester la connexion. Vous devriez voir « Le test de connectivité a réussi ».
-
Au bas de la page, cliquez sur Avancé.
-
Cliquez sur l’onglet « Attributs binaires LDAP », puis ajoutez
guidAttributeetobjectGUIDen tant qu’attributs. -
Cliquez sur Done. Vous devez revenir à l’onglet « Configuration LDAP ».
-
Cliquez sur Suivant et sur Enregistrer.
-
Dans l’onglet « Gérer les magasins de données », cliquez sur Terminé.
-
Dans l’onglet « Configuration de l’instance », saisissez les informations suivantes.
- « Magasin de données LDAP » : nom du magasin de données que vous avez créé ci-dessus
- « Base de recherche » : emplacement dans l’annuaire dans lequel vous souhaitez que les recherches LDAP commencent
- « Filtre de recherche » : filtre qui garantit que le nom d’utilisateur saisi par l’utilisateur lors de la connexion correspond à un champ du serveur LDAP (par exemple :
sAMAccountName=${username}) - « Étendue de la recherche » : sous-arbre
- « Correspondance sensible à la casse » : sélectionnée
-
Cliquez sur Suivant, encore Suivant, puis Enregistrer.
Gérer la sortie SAML à partir de votre adaptateur IdP
-
Dans la page « Gérer les validateurs d’informations d’identification du mot de passe », cliquez sur Terminé.
-
Dans l’onglet « Adaptateur IDP », saisissez les informations suivantes.
- « Instance de validateur d’informations d’identification du mot de passe » : le nom de l’instance du validateur que vous avez créée ci-dessus (par exemple
pfghdocscv). Cliquez sur Mettre à jour pour finaliser votre sélection. - Tous les autres champs peuvent être laissés comme valeurs par défaut ou modifiés en fonction de vos besoins.
- « Instance de validateur d’informations d’identification du mot de passe » : le nom de l’instance du validateur que vous avez créée ci-dessus (par exemple
-
Cliquez sur Suivant, puis encore sur Suivant.
-
Dans l’onglet « Attributs de l’adaptateur », saisissez les informations suivantes.
-
« Attribut clé utilisateur unique » :
username -
À côté de l’attribut
username, sélectionnez « Pseudonyme ».
Remarque
Cette étape est importante. L’attribut de l’adaptateur est utilisé pour identifier de manière unique un utilisateur sur GitHub lors de l’approvisionnement SCIM.
-
-
Cliquez sur Suivant, puis encore sur Suivant.
-
Vérifiez vos paramètres sur la page de résumé, puis cliquez sur Enregistrer.
-
Sous l’onglet « Adaptateurs IdP », vous devez voir l’adaptateur que vous venez de créer. Cliquez sur Done.
-
Sous l’onglet « Instance d’adaptateur », dans la liste déroulante « Instance d’adaptateur », sélectionnez l’adaptateur que vous venez de créer.
-
Cliquez sur Suivant.
-
Sous l’onglet « Méthode de mappage », sélectionnez Utiliser uniquement les valeurs du contrat d’adaptateur dans l’assertion SAML (d’autres sélections peuvent fonctionner, mais n’ont pas été confirmées).
-
Cliquez sur Suivant.
-
Sous l’onglet « Traitement du contrat d’attribut », associez
SAML_SUBJECTà « Adaptateur » comme source etusernamecomme valeur.Remarque
Cette étape est importante. Le
SAML_SUBJECTnormalisé doit correspondre aux noms d’utilisateur normalisés des utilisateurs approvisionnés par SCIM. -
Cliquez sur Suivant, encore sur Suivant, puis sur Enregistrer.
-
Vous devez revenir à l’onglet « Mappage de source d’authentification » et la section « Nom de l’instance de l’adaptateur » doit contenir l’instance de l’adaptateur que vous venez de créer.
-
Cliquez sur Suivant.
-
Sous l’onglet « Paramètres du protocole », cliquez sur Configurer les paramètres du protocole.
-
Pour l’« URL du service consommateur d’assertion », ajoutez une ligne avec les informations suivantes :
- «Par défaut» sélectionné
- « Index » : 0
- « Liaison » : POST
- « URL du point de terminaison » :
HOSTNAME/saml/consume
-
Cliquez sur Suivant.
-
Sous l’onglet « Liaisons SAML autorisées », vérifiez que seuls « POST » et « REDIRECT » sont sélectionnés.
-
Cliquez sur Suivant.
-
Dans la page « Stratégie de signature », vérifiez que seule l’option « SIGNER LA RÉPONSE SELON LES EXIGENCES » est cochée.
-
Cliquez sur Suivant.
-
Sous l’onglet « Azure Policy de chiffrement », vérifiez que « NONE » est sélectionné.
-
Cliquez sur Suivant.
-
Cliquez sur Enregistrer.
-
Cliquez sur Suivant et sur Terminé jusqu’à atteindre l’onglet « Informations d’identification ».
-
Sous l’onglet « Informations d’identification », cliquez sur Configurer les informations d’identification, puis sur Gérer les certificats.
-
Dans la page « Gestion des certificats », cliquez sur Importer, puis chargez un certificat X509 (pour obtenir de l’aide, consultez la section Exemple de création d’un certificat X509).
-
Pour le « Mot de passe », utilisez le mot de passe de défi pour le certificat.
-
Cliquez sur Suivant et sur Enregistrer.
-
Dans l’onglet « Gestion des certificats », vous devez voir le certificat que vous venez d’importer. Cliquez sur Done.
-
Dans l’onglet « Paramètres de signature numérique » :
- Sélectionnez le certificat que vous venez de créer pour le « Certificat de signature ».
- Vous pouvez laisser le certificat secondaire vide et la case à cocher « Inclure le certificat dans la signature » est désactivée.
- L’algorithme de signature doit être « RSA SHA256 ».
-
Cliquez sur Suivant, ensuite sur Enregistrer, puis sur Suivant.
-
Dans l’onglet « Résumé », activez le bouton bascule pour « Point de terminaison d’application SSO ».
-
Cliquez sur Enregistrer. Vous devez revenir à la liste des connexions SP, où vous devez voir votre connexion SP nouvellement créée.
Collecter des informations pour votre configuration SAML
Vous aurez besoin de détails de PingFederate pour configurer SAML sur GitHub.
- Dans la page « Connexions du fournisseur de services », dans la ligne de votre nouvelle connexion, cliquez sur Sélectionner une action, puis Exporter les métadonnées.
- Sous l’onglet « Signature des métadonnées », dans la ligne de votre nouvelle connexion, sélectionnez le certificat de signature que vous avez créé ci-dessus. Pour télécharger le certificat, cliquez sur Suivant, puis sur Exporter.
- Sur PingFederate, cliquez sur Système dans l’en-tête, puis sur Serveur, ensuite sur Paramètres du protocole. Vérifiez que la valeur
SAML 2.0 ENTITY IDest définie. Notez-les, car vous en aurez besoin pour le champ « Émetteur » dans les paramètres SAML de GitHub. - Ouvrez le fichier de métadonnées que vous avez téléchargé et préparez-le pour les étapes suivantes.
Configurez GitHub
-
Connectez-vous à GitHub en tant que un utilisateur ayant accès à la console de gestion.
-
Activez SAML dans vos paramètres d’entreprise. Consultez Configuration d'une authentification unique (SSO) SAML pour votre entreprise.
-
Saisissez les valeurs suivantes du fichier de métadonnées SAML de la section précédente.
- Pour l’URL d’authentification unique, utilisez la valeur
locationdu champ<md: SingleSignOnService>. Il doit s’agir d’une URL se terminant par/idp/SSO.saml2. - Pour « Emetteur », utilisez la valeur
entityIddu champ<md: EntityDescriptor>(une URL).
- Pour l’URL d’authentification unique, utilisez la valeur
-
Pour le « certificat de vérification », chargez le fichier de certificat X509 que vous avez créé précédemment.
-
Cliquez sur Enregistrer les paramètres.
2. Configurer SCIM
Dans cette section, vous allez configurer les paramètres SCIM et le mappage d’attributs sur PingFederate.
-
[Configurer les paramètres SCIM](#configure-scim-settings) -
[Mapper des champs LDAP à SCIM](#map-ldap-fields-to-scim) -
[Terminer la configuration et le test](#finish-configuration-and-test)
Avant de commencer cette section, vérifiez que vous avez suivi les étapes 1 et 4 dans Configuration du provisionnement SCIM pour gérer les utilisateurs.
Configurer les paramètres SCIM
-
Revenez à la page « Connexions SP » sur PingFederate, puis sélectionnez la connexion SP que vous avez créée précédemment.
-
Cliquez sur l’onglet « Type de connexion ».
-
Sélectionnez Approvisionnement sortant.
-
Vérifiez que les Profils SSO du navigateur sont sélectionnés.
-
Cliquez sur Suivant jusqu’à atteindre l’onglet « Approvisionnement sortant », puis cliquez sur Configurer l’approvisionnement.
-
Saisissez les informations suivantes sous l’onglet « Objectif ».
- « URL de base » :
https://HOSTNAME/api/v3/scim/v2 - « Jeton d’accès » : le personal access token (classic) créé pour l’utilisateur de configuration
- « URL de base » :
-
Cliquez sur Suivant.
-
Dans l’onglet « Gérer le canal », cliquez sur Créer, puis saisissez un nom de canal unique, tel que
pfghscim. -
Cliquez sur Suivant.
-
Dans l’onglet « Source », sélectionnez le magasin de données que vous avez créé précédemment.
-
Cliquez sur Suivant.
-
Sous l’onglet « Paramètres sources », vous pouvez conserver tous les paramètres par défaut. D’autres paramètres sont susceptibles de fonctionner, mais n’ont pas été confirmés.
-
Cliquez sur Suivant.
-
Sous l’onglet « Emplacement source », configurez l’emplacement à partir duquel vous souhaitez que les utilisateurs approvisionnés proviennent de votre serveur LDAP. Cela varie en fonction de votre configuration et de vos besoins. Après la configuration, cliquez sur Suivant.
Associer des champs LDAP à SCIM
Sous l’onglet « Mappage d’attributs », vous devez mapper des champs de votre serveur LDAP aux champs SCIM. Consultez la liste suivante pour les champs SCIM pris en charge par GitHub et les valeurs attendues dans chacune d’elles.
- Nom d’utilisateur : celui-ci sera normalisé et utilisé comme nom d’utilisateur de GitHub pour l’utilisateur approvisionné. Consultez « Considérations relatives au nom d'utilisateur pour une authentification externe ». Cela doit correspondre à la normalisation de l’objet envoyé avec l’assertion SAML que vous avez configurée avec la propriété
SAML_SUBJECTdans PingFederate. - E-mail : champ contenant l’adresse e-mail de l’utilisateur.
- Nom à afficher : Un nom lisible par l'utilisateur.
- Nom complet formaté : le nom complet de l’utilisateur, y compris tous les deuxièmes prénoms, titres et suffixes, formaté pour l’affichage.
- Prénom : le prénom de l’utilisateur.
- Nom de famille : le nom de famille de l’utilisateur.
- Identificateur externe : cet identificateur est généré par un fournisseur IdP.
- Roles : ce champ doit contenir une chaîne qui représente le rôle prévu de l’utilisateur sur GitHub. Les rôles valides sont
enterprise_owneretuser.
Une fois terminée la configuration des paramètres, cliquez sur Suivant.
Terminer la configuration et le test
- Dans l’onglet « Activation et résumé », pour « État de la chaîne », sélectionnez Actif.
- Dans l’onglet « Gérer les canaux », cliquez sur Terminé.
- Dans l’onglet « Approvisionnement sortant », cliquez sur Enregistrer. SCIM est maintenant configuré et activé.
- Attendez quelques minutes pour que l’approvisionnement s’exécute, puis ouvrez une nouvelle fenêtre de navigateur privé et accédez à GitHub.
- Cliquez sur Se connecter avec SAML. Vous devez être redirigé vers la page de connexion PingFederate.
- Vous devez être en mesure de vous connecter avec les informations d’identification d’un utilisateur du serveur LDAP qui a été approvisionné sur GitHub.
L’approvisionnement PingFederate gère les utilisateurs et les groupes indépendamment. Les utilisateurs doivent être affectés directement pour être approvisionnés. Les utilisateurs qui se trouvent dans un groupe affecté, mais qui ne sont pas directement affectés ne seront pas approvisionnés.
Une fois que vous avez terminé de configurer SCIM, vous pouvez désactiver certains paramètres SAML que vous avez activés pour le processus de configuration. Consultez « Configuration du provisionnement SCIM pour gérer les utilisateurs ».
Exemple de création d’un certificat X509
Il existe plusieurs façons de créer un certificat X509. Voici un exemple qui peut fonctionner pour vos besoins.
-
Dans une fenêtre de terminal, vérifiez qu’OpenSSL est installé en exécutant
openssl version. Si l’extension n’est pas installée, installez-la. -
Générez la clé privée à l’aide de la commande suivante.
Shell openssl req -nodes -sha256 -newkey rsa:2048 -keyout MyPrivateKey.key -out MyCertificateRequest.csr
openssl req -nodes -sha256 -newkey rsa:2048 -keyout MyPrivateKey.key -out MyCertificateRequest.csrSaisissez les informations requises et prenez note du mot de passe de défi que vous créez.
-
Pour vous assurer que la clé a été créée, exécutez la commande suivante. Un fichier nommé
MyPrivateKey.keydoit être répertorié dans la sortie de commande.Shell ls | grep MyPrivateKey.key
ls | grep MyPrivateKey.key -
Générez le certificat à l’aide de la commande suivante.
Shell openssl x509 -req -days 365 -sha256 -in MyCertificateRequest.csr -signkey MyPrivateKey.key -out pfgh256.crt
openssl x509 -req -days 365 -sha256 -in MyCertificateRequest.csr -signkey MyPrivateKey.key -out pfgh256.crt -
Pour vous assurer que le certificat a été créé, exécutez la commande suivante. Un fichier nommé
pfgh256.crtdoit être répertorié dans la sortie de commande.Shell ls | grep pfgh256.crt
ls | grep pfgh256.crt -
Exportez un fichier PKCS #12 à l’aide de la commande suivante. Il s’agit du fichier que vous devez charger sur PingFederate.
Shell openssl pkcs12 -export -in pfgh256.crt -inkey MyPrivateKey.key -out pfgh256.p12
openssl pkcs12 -export -in pfgh256.crt -inkey MyPrivateKey.key -out pfgh256.p12 -
Pour vous assurer que le fichier a été exporté, exécutez la commande suivante. Un fichier nommé
pfgh256.p12doit être répertorié dans la sortie de commande.Shell ls | grep pfgh256.p12
ls | grep pfgh256.p12