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 IdP et GitHub, ce qui se produit généralement avec les IdP auto-hébergés.
Si vous rencontrez cette erreur, assurez-vous que l’heure de votre fournisseur d’identité est correctement synchronisée avec votre serveur NTP.
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.
Les utilisateurs sont redirigés à plusieurs reprises pour s’authentifier
Si les utilisateurs sont redirigés à plusieurs reprises vers l’invite d’authentification SAML dans une boucle, il peut être nécessaire d’augmenter la durée de la session SAML dans vos paramètres de fournisseur d’identité.
La valeur SessionNotOnOrAfter
envoyée dans une réponse SAML détermine quand un utilisateur est redirigé vers le fournisseur d’identité pour s’authentifier. Si une durée de session SAML est configurée pour 2 heures ou moins, GitHub va actualiser une session SAML 5 minutes avant son expiration. Si la durée de votre session est configurée pour 5 minutes ou moins, les utilisateurs peuvent être bloqués dans une boucle d’authentification SAML.
Pour résoudre ce problème, nous vous recommandons de configurer une durée minimale de session SAML de 4 heures. Pour plus d’informations, consultez « Référence de configuration SAML ».
Certains utilisateurs ne sont pas approvisionnés ni déprovisionnés par SCIM
Lorsque vous rencontrez des problèmes d’approvisionnement avec les utilisateurs, nous vous recommandons de vérifier si les utilisateurs ne disposent pas de métadonnées SCIM.
Si l’approvisionnement de SCIM est implémenté pour votre organisation, toutes les modifications apportées à l’appartenance à l’organisation d’un utilisateur devraient être déclenchées à partir du fournisseur d’identité. Si un utilisateur est invité à une organisation manuellement plutôt que par une intégration de SCIM existante, il se peut que son compte d’utilisateur ne soit pas correctement lié à son identité SCIM. Cela peut empêcher le déprovisionnement du compte d’utilisateur via SCIM à l’avenir. Si un utilisateur est supprimé manuellement plutôt que par une intégration SCIM existante, une identité liée obsolète subsiste, qui peut occasionner des problèmes si l’utilisateur a besoin de rejoindre à nouveau l’organisation.
Si un membre de l’organisation a des métadonnées SCIM manquantes, vous pouvez reprovisionner SCIM pour l’utilisateur manuellement via votre fournisseur d’identité.
Audit des utilisateurs pour les métadonnées SCIM manquantes
Si vous soupçonnez ou remarquez que tous les utilisateurs ne sont pas approvisionnés ou déprovisionnés comme prévu, nous vous recommandons d’auditer tous les utilisateurs de votre organisation.
Pour vérifier si les utilisateurs ont une identité SCIM (métadonnées SCIM) dans leur identité externe, vous pouvez consulter les métadonnées SCIM d’un membre de l’organisation à la fois sur GitHub ou vérifier programmatiquement tous les membres de l’organisation à l’aide de l’API GitHub.
Lorsque le fournisseur d’identité envoie un appel de provisionnement à l’API SCIM GitHub, le SCIM userName
dans cet appel d’API doit correspondre au nameID
SAML stocké dans l’identité SAML associée de l’utilisateur dans l’organisation. Si ces deux valeurs ne correspondent pas, les métadonnées SCIM ne sont pas renseignées et l’identité SCIM n’est pas correctement associée. Pour vérifier si ces valeurs correspondent, utilisez l’API GitHub.
Audit des membres de l’organisation sur GitHub
En tant que propriétaire de l’organisation, pour vérifier que les métadonnées SCIM existent pour un seul membre de l’organisation, visitez cette URL, en remplaçant <organization>
et <username>
:
https://github.com/orgs/<organization>/people/<username>/sso
Si l’identité externe de l’utilisateur inclut des métadonnées SCIM, le propriétaire de l’organisation doit voir une section d’identité SCIM sur cette page. Si leur identité externe n’inclut pas de métadonnées SCIM, la section Identité SCIM n’existe pas.
Audit des membres de l’organisation sur l’API GitHub
En tant que propriétaire de l’organisation, vous pouvez également interroger l’API REST SCIM ou GraphQL pour répertorier toutes les identités approvisionnées SCIM dans une organisation.
En utilisant l’API REST
L’API REST SCIM retourne uniquement des données pour les utilisateurs dont les métadonnées SCIM sont remplies sous leurs identités externes. Nous vous recommandons de comparer une liste d’identités approvisionnées par SCIM à une liste de tous les membres de votre organisation.
Pour plus d’informations, consultez l’article suivant :
- Points de terminaison d’API REST pour SCIM
- Points de terminaison d’API REST pour les membres de l’organisation
Utilisation de GraphQL
Cette requête GraphQL vous montre le SAML NameId
, le SCIM UserName
et le nom d’utilisateur GitHub nom d’utilisateur (login
) pour chaque utilisateur de l’organisation. Pour utiliser cette requête, remplacez ORG
par le nom de votre organisation.
{
organization(login: "ORG") {
samlIdentityProvider {
ssoUrl
externalIdentities(first: 100) {
edges {
node {
samlIdentity {
nameId
}
scimIdentity {
username
}
user {
login
}
}
}
}
}
}
}
curl -X POST -H "Authorization: Bearer YOUR_TOKEN" -H "Content-Type: application/json" -d '{ "query": "{ organization(login: \"ORG\") { samlIdentityProvider { externalIdentities(first: 100) { pageInfo { endCursor startCursor hasNextPage } edges { cursor node { samlIdentity { nameId } scimIdentity {username} user { login } } } } } } }" }' https://api.github.com/graphql
Pour plus d’informations sur l’utilisation de l’API GraphQL, consultez :
Réapprovisionnement de SCIM pour les utilisateurs via votre fournisseur d’identité
Vous pouvez reprovisionner SCIM pour les utilisateurs manuellement via votre fournisseur d’identité. Par exemple, pour résoudre les erreurs d’approvisionnement pour Okta, dans le portail d’administration Okta, vous pouvez annuler l’affectation et réaffecter des utilisateurs à l’application GitHub. Cela doit déclencher Okta pour effectuer un appel d’API afin de remplir les métadonnées SCIM pour ces utilisateurs sur GitHub. Pour plus d’informations, consultez Annuler l’affectation d’utilisateurs à partir d’applications ou Affecter des utilisateurs à des applications dans la documentation Okta.
Pour vérifier que l’identité SCIM d’un utilisateur est créée, nous vous recommandons de tester ce processus avec un seul membre de l’organisation que vous avez confirmé qui n’a pas d’identité externe SCIM. Après avoir mis à jour manuellement les utilisateurs dans votre fournisseur d’identité, vous pouvez vérifier si l’identité SCIM de l’utilisateur a été créée à l’aide de l’API SCIM ou sur GitHub. Pour plus d’informations, consultez Audit des utilisateurs pour les métadonnées SCIM manquantes ou Points de terminaison d’API REST pour SCIM.
Si la reprovisionnement de SCIM pour les utilisateurs n’est pas utile, contactez le support technique GitHub.
Erreur d’identité SAML en conflit
Lorsque les utilisateurs tentent de s’authentifier auprès de votre fournisseur d’identité (IdP) SAML pour accéder à une organisation ou une entreprise GitHub pour la première fois, ils peuvent rencontrer le message d’erreur suivant.
Votre compte d’utilisateur GitHub [nom d’utilisateur GitHub] est actuellement dissocié. Toutefois, vous tentez de vous authentifier auprès de votre fournisseur d’identité en utilisant l’identité SAML [compte d’utilisateur du fournisseur d’identité] qui est déjà liée à un autre compte d’utilisateur GitHub dans l’[organisation/entreprise]. Veuillez contacter l’un des propriétaires de votre [organisation/entreprise] GitHub pour obtenir de l’aide.
Si le fournisseur d’identité est Entra ID, le message d’erreur inclura le User Object ID
de l’identité liée dans Entra ID, que GitHub désigne par le External ID
.
Ce message d’erreur apparaît car une identité externe ne peut être liée qu’à un seul compte d’utilisateur GitHub au sein d’une organisation ou d’une entreprise.
Identification de l’utilisateur avec une identité en conflit
Lorsque les utilisateurs vous contactent pour vous signaler cette erreur, vous pouvez suivre les étapes suivantes pour identifier les comptes en conflit.
- Utilisez l’API GraphQL GitHub pour déterminer quel utilisateur est lié à l’identité externe en conflit.
- Si SAML est configuré au niveau de l’organisation GitHub : un propriétaire d’organisation doit interroger les identités externes existantes au niveau de l’organisation et les filtrer par le SAML
NameID
du compte du fournisseur d’identité avec lequel l’utilisateur s’authentifie lorsque cette erreur se produit. Consultez l’exemple org-saml-identities-filtered-by-nameid-username.graphql dans le référentielplatform-samples
. - Si SAML est configuré au niveau de l’entreprise GitHub : un propriétaire d’entreprise doit interroger les identités externes existantes au niveau de l’entreprise et les filtrer par le SAML
NameID
du compte du fournisseur d’identité avec lequel l’utilisateur s’authentifie lorsque cette erreur se produit. Consultez l’exemple enterprise-saml-identities-filtered-by-nameid.graphql dans le référentielplatform-samples
.
- Si SAML est configuré au niveau de l’organisation GitHub : un propriétaire d’organisation doit interroger les identités externes existantes au niveau de l’organisation et les filtrer par le SAML
- Si vous avez identifié un utilisateur GitHub associé à l’identité externe en conflit, pour confirmer si l’utilisateur est toujours actif dans l’entreprise et dans les organisations qui en font partie, un propriétaire d'entreprise peut suivre les étapes décrites dans Visualisation des personnes dans votre entreprise.
Résolution du conflit
Lorsque vous avez suivi les étapes permettant d’identifier les comptes en conflit, plusieurs options de résolution s’offrent à vous en fonction de vos résultats. Si vous rencontrez des problèmes en essayant de suivre ces étapes ou si vous avez des questions, vous pouvez ouvrir un ticket de support GitHub en utilisant le Portail de support GitHub.
- L’utilisateur GitHub en conflit n’a plus besoin d’un accès
- L’utilisateur GitHub en conflit a toujours besoin d’un accès
- Aucun utilisateur GitHub en conflit trouvé
L’utilisateur GitHub en conflit n’a plus besoin d’un accès
Si un compte utilisateur GitHub est associé à l’identité externe en conflit qui n’a plus besoin d’accéder à l’organisation ou à l’entreprise GitHub, supprimez-le en tant que membre. Si l’utilisateur est supprimé correctement, son identité SAML liée, ainsi que son identité SCIM liée si elle existe au niveau de l’organisation, devraient également être supprimées.
- Si vous utilisez l’approvisionnement SCIM pour gérer l’appartenance à l’organisation, vous devez supprimer les privilèges d’accès de l’utilisateur depuis votre fournisseur d’identité via SCIM, plutôt que de suivre les étapes sur GitHub. Sinon, l’identité SAML et SCIM associée de l’utilisateur reste dans l’organisation, ce qui peut continuer à provoquer l’erreur.
- Si vous n’utilisez pas l’approvisionnement SCIM pour gérer l’appartenance à l’organisation, consultez Suppression d’un membre de votre organisation ou Suppression d’un membre de votre entreprise. Veillez également à supprimer l’accès de l’utilisateur à l’application GitHub pour l’organisation ou l’entreprise dans votre fournisseur d’identité.
Pour confirmer qu’une identité SAML ou SCIM a été supprimée avec succès d'une organisation GitHub pour un utilisateur, consultez Dépannage de la gestion des identités et des accès pour votre organisation.
L’utilisateur GitHub en conflit a toujours besoin d’un accès
Si un compte d’utilisateur GitHub est associé à l’identité externe en conflit et que cet utilisateur a toujours besoin d’accéder à l’organisation ou à l’entreprise, vous devrez soit modifier l’identité liée pour le compte d’utilisateur, soit demander à l’utilisateur qui reçoit l’erreur de s'authentifier avec une autre identité de fournisseur d’identité.
- Si vous utilisez l’approvisionnement SCIM pour gérer l’appartenance à une organisation et que vous devez modifier l’identité externe liée au compte GitHub du membre, supprimez les privilèges d’accès puis rétablissez-les depuis votre fournisseur d’identité (par exemple, supprimez l’attribution de l’utilisateur à l’application et réattribuez-la).
- Lorsque les privilèges d’accès de l’utilisateur du fournisseur d’identité sont supprimés, son compte GitHub et l’identité SAML/SCIM associée sont retirés de l’organisation GitHub.
- Lorsque l’utilisateur du fournisseur d’identité sera réapprovisionné dans l’organisation GitHub, une nouvelle invitation d’organisation en attente et une nouvelle identité SCIM non liée seront créées. Cela permettra à l’utilisateur de se connecter avec ce compte d’utilisateur GitHub, de s’authentifier via SAML et de lier la nouvelle identité du fournisseur d’identité à son compte. Ces étapes permettront de s’assurer que les nouvelles identités SAML et SCIM sont correctement liées au compte d’utilisateur GitHub dans l’organisation.
- Si vous n’utilisez pas l’approvisionnement SCIM pour gérer l’appartenance à l’organisation, ou si SAML est configuré au niveau de l’entreprise, vous pouvez révoquer l’identité externe liée pour l’utilisateur en suivant les étapes décrites dans l’un des articles suivants :
Aucun utilisateur GitHub en conflit trouvé
Si aucun compte d’utilisateur GitHub n’est associé à l’identité externe en conflit, vous pouvez révoquer l’identité externe.
- Si vous utilisez l’approvisionnement SCIM pour gérer l’appartenance à l’organisation, supprimez l’identité obsolète et non liée de votre fournisseur d’identité (par exemple, supprimez l’attribution de l’utilisateur à l’application du fournisseur d’identité).
- Si le fournisseur d’identité n’envoie pas l’appel d’API SCIM approprié à GitHub, l’identité restera dans l’organisation et l’erreur risque de persister.
- Pour confirmer qu’une identité SAML ou SCIM a été supprimée avec succès d'une organisation GitHub pour un utilisateur, consultez Dépannage de la gestion des identités et des accès pour votre organisation.
- Si vous n’utilisez pas l’approvisionnement SCIM pour gérer l’appartenance à l’organisation, pour révoquer l’identité externe liée, accédez à l’une des URL suivantes pour révoquer l’identité externe. Remplacez
USERNAME
par le nom d’utilisateur GitHub de l’utilisateur qui ne peut pas se connecter, etORGANIZATION
ouENTERPRISE
par la valeur appropriée.https://github.com/orgs/ORGANIZATION/people/USERNAME/sso
https://github.com/enterprises/ENTERPRISE/people/USERNAME/sso