Skip to main content

Résolution des problèmes d’authentification SAML

Si vous utilisez l’authentification unique SAML et que les utilisateurs ne peuvent pas s’authentifier pour y accéder GitHub, vous pouvez résoudre le problème.

À propos des problèmes liés à l’authentification SAML

GitHub Enterprise Server enregistre des messages d’erreur concernant les échecs d’authentification SAML dans les journaux systemd du conteneur github-unicorn. Vous pouvez consulter les réponses dans ce journal et vous pouvez également configurer une journalisation plus détaillée.

Pour plus d’informations sur les exigences de réponse SAML, consultez Référence de configuration SAML.

Configuration du débogage SAML

Vous pouvez configurer GitHub Enterprise Server afin d’écrire des journaux de débogage détaillés pour chaque tentative d’authentification SAML. Cette sortie supplémentaire pourrait vous permettre de résoudre les tentatives d’authentification avortées.

Avertissement

  • N’activez le débogage SAML que de façon temporaire et désactivez-le de suite après avoir résolu les problèmes. Si vous laissez le débogage activé, la taille des journaux augmente beaucoup plus rapidement qu’à l’ordinaire, ce qui peut nuire aux performances de GitHub Enterprise Server.
  • Testez les nouveaux paramètres d’authentification dans votre instance GitHub Enterprise Server un environnement intermédiaire avant d’appliquer les paramètres dans votre environnement de production. Pour plus d’informations, consultez « Configuration d’une instance de préproduction ».
  1. Dans le coin supérieur droit de GitHub Enterprise Server, cliquez sur votre photo de profil, puis sur Paramètres d’entreprise.

  2. En haut de la page, cliquez sur Stratégies.

  3. Sous Politiques, cliquez sur Options.

  4. Sous « Débogage SAML », sélectionnez la liste déroulante, puis cliquez sur Activé.

  5. Tentez de vous connecter à votre instance GitHub Enterprise Server via votre IdP SAML.

  6. Examinez la sortie de débogage dans le journal systemd pour github-unicorn sur votre instance GitHub Enterprise Server. Pour plus d’informations, consultez « À propos des journaux système ».

  7. Une fois la résolution des problèmes terminée, sélectionnez la liste déroulante, puis cliquez sur Désactivé.

Décodage des réponses

Certaines sorties dans le journal systemd pour github-unicorn peuvent être encodées en Base64. Vous pouvez accéder au shell d’administration et utiliser l’utilitaire base64 sur votre instance GitHub Enterprise Server pour décoder ces réponses. Pour plus d’informations, consultez « Accès à l’interpréteur de commandes d’administration (SSH) ».

Pour décoder la sortie, exécutez la commande suivante, en remplaçant ENCODED_OUTPUT par la sortie encodée du journal.

base64 --decode ENCODED_OUTPUT

Erreur : « Un autre utilisateur est déjà propriétaire du compte »

Lorsqu’un utilisateur se connecte à votre instance GitHub Enterprise Server pour la première fois avec l’authentification SAML, GitHub crée un compte utilisateur sur l’instance et associe les éléments SAML NameID et nameid-format à ce compte.

Lorsque l’utilisateur se reconnecte, GitHub Enterprise Server compare le mappage NameID et nameid-format du compte à la réponse de l’IdP. Si le NameID ou le nameid-format dans la réponse de l’IdP ne correspond plus aux valeurs que GitHub attend pour l’utilisateur, la connexion échouera. L’utilisateur obtient le message suivant.

Un autre utilisateur est déjà propriétaire du compte. Demandez à votre administrateur de vérifier le journal d’authentification.

Le message indique généralement que le nom d’utilisateur ou l’adresse e-mail de la personne a changé au niveau de l’IdP. Vérifiez que le mappage NameID et nameid-format du compte utilisateur sur GitHub Enterprise Server correspond aux valeurs NameID et nameid-format de l’utilisateur sur votre IdP. Pour plus d’informations, consultez « Mise à jour du paramètre NameID SAML d’un utilisateur ».

Erreur : Le destinataire dans la réponse SAML était absent ou non valide

Si le Recipient ne correspond pas à l’URL ACS pour votre instance GitHub Enterprise Server, l’un des deux messages d’erreur suivants apparaîtra dans le journal d’authentification lorsqu’un utilisateur tente de s’authentifier.

Recipient in the SAML response must not be blank.
Recipient in the SAML response was not valid.

Veillez à définir la valeur de Recipient sur votre IdP sur l’URL ACS complète de votre instance GitHub Enterprise Server. Par exemple : https://ghe.corp.example.com/saml/consume.

Erreur : « La réponse SAML n’est pas signée ou a été modifiée »

Si votre IdP ne signe pas la réponse SAML ou que la signature ne correspond pas au contenu, le message d’erreur suivant s’affiche dans le journal d’authentification.

SAML Response is not signed or has been modified.

Veillez à configurer des assertions signées pour l’application GitHub sur votre IdP.

Erreur : « L’audience n’est pas valide » ou « Aucune assertion trouvée »

Si la valeur de Audience dans la réponse de l’IdP est vide ou incorrecte, le message d’erreur suivant s’affiche dans le journal d’authentification.

Audience is invalid. Audience attribute does not match https://YOUR-INSTANCE-URL

Veillez à définir la valeur de Audience sur votre IdP sur le EntityId de votre instance GitHub Enterprise Server, c’est-à-dire l’URL complète de votre instance. Par exemple : https://ghe.corp.example.com.

Erreur : « L’heure actuelle est antérieure à la condition NotBefore »

Cette erreur peut se produire lorsqu’il existe un écart de temps trop important entre votre IdP et GitHub, ce qui est fréquent avec les IdP auto-hébergés.

Pour éviter ce problème, nous vous recommandons de configurer votre appliance pour qu’elle utilise la même source NTP (Network Time Protocol) que votre IdP, si possible. Si vous rencontrez cette erreur, vérifiez que l’heure sur votre idPest correctement synchronisée avec votre serveur NTP. Vous pouvez utiliser la chronyc commande sur l’interpréteur de commandes d’administration pour synchroniser immédiatement le temps. Pour plus d’informations, consultez Configuration de la synchronisation de l’heure.

Si vous utilisez ADFS comme fournisseur d’identité, définissez aussi NotBeforeSkew dans ADFS sur 1 minute pour GitHub. Si NotBeforeSkew est défini sur 0, même les différences de temps très petites, y compris de l’ordre de la milliseconde, peuvent entraîner des problèmes d’authentification.

Erreur : « échec - La validation SAML mise à jour a renvoyé un résultat non valide »

Cette erreur peut se produire dans la version 3.17.0 ou ultérieure de votre instance GitHub Enterprise Server. Cela indique que GitHub n’est pas en mesure de traiter correctement la réponse SAML qu’il a reçue du fournisseur d’identité. Ouvrez un GitHub ticket de support afin que les GitHub équipes de support et d’ingénierie puissent examiner et résoudre le problème.

Erreur : non-correspondance du digest

Une erreur « Incompatibilité de synthèse » indique que votre fournisseur d’identité SAML utilise un certificat de signature SAML différent de celui que vous avez chargé vers GitHub ou que la méthode signature ou la méthode Digest configurée GitHub diffère de celle utilisée par votre fournisseur d’identité.

Téléchargez à nouveau ce certificat SAML depuis votre IdP et validez-le à l’aide d’un outil en ligne, tel que l’outil Format a x509 cert de OneLogin. Chargez ensuite à nouveau le certificat SAML dans la section « Authentification » de votre GitHub Enterprise Server console de gestion. Voir Accès à la console de gestion.