Skip to main content

Résolution des problèmes d’authentification SAML

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

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

GitHub Enterprise Server enregistre les messages d'erreur pour l'échec de l'authentification SAML dans les systemd journal logs pour le conteneur github-unicorn. Vous pouvez consulter les réponses dans ce journal, et vous pouvez également configurer une journalisation plus verbeuse.

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 pour écrire des journaux de débogage détaillés pour chaque tentative d’authentification SAML. Ce sortie supplémentaire vous aidera peut-être à résoudre les tentatives d’authentification avortées.

Warning

  • 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 que d’habitude, ce qui peut avoir un impact négatif sur les performances de GitHub Enterprise Server.
  • Testez les nouveaux paramètres d’authentification pour votre instance GitHub Enterprise Server dans un environnement de préproduction avant de les appliquer 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.

    Capture d’écran du menu déroulant qui s’affiche lorsque vous cliquez sur la photo de profil sur GitHub Enterprise Server. L’option « Paramètres d’entreprise » est mise en évidence avec un contour orange foncé.

  2. Sur le côté gauche de la page, dans la barre latérale du compte d’entreprise, cliquez sur Stratégies.

  3. Sous Policies , cliquez sur Options.

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

  5. Essayez 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

Une sortie dans le journal système pour github-unicorn peut être codé en Base64. Vous pouvez accéder à l’interpréteur de commandes d’administration et vous servir de 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 »

Quand un utilisateur se connecte à votre instance GitHub Enterprise Server. pour la première fois avec l’authentification SAML, GitHub Enterprise Server crée un compte d’utilisateur sur l’instance et mappe le NameID et le nameid-format SAML au compte.

Quand l’utilisateur se connecte à nouveau, GitHub Enterprise Server compare le mappage du NameID et du nameid-format du compte à la réponse de l’IdP. Si le NameID ou nameid-format présent dans la réponse de l’IdP ne correspond plus à la valeur que GitHub Enterprise Server attend pour l’utilisateur, la connexion échoue. 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 du NameID et du nameid-format du compte d’utilisateur sur GitHub Enterprise Server correspond au NameID et au nameid-format de l’utilisateur au niveau de 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 de votre instance GitHub Enterprise Server, l’un des deux messages d’erreur suivants s’affiche dans le journal d’authentification quand 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 au niveau de votre IdP sur l’URL ACS complète pour 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 les assertions signées pour l’application GitHub Enterprise Server au niveau de 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 au niveau de votre IdP sur EntityId pour votre instance GitHub Enterprise Server., qui est 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 y a une trop grande différence de temps entre votre fournisseur d’identité et GitHub Enterprise Server, ce qui arrive souvent avec les fournisseurs d’identité auto-hébergés.

Pour éviter ce problème, nous vous recommandons de faire pointer votre appareil vers la même source NTP (Network Time Protocol) que votre fournisseur d’identité, si possible. Si vous rencontrez cette erreur, assurez-vous que l’heure de votre appliance est correctement synchronisée avec votre serveur NTP. Vous pouvez utiliser la commande chronyc sur le shell d’administration pour synchroniser l’heure immédiatement. Pour plus d’informations, consultez « Configuration de la synchronisation de l’heure ».

Si vous utilisez ADFS comme fournisseur d’identité, définissez également 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.