Skip to main content

Référence de configuration SAML

Vous pouvez voir les métadonnées SAML pour votre organisation ou votre entreprise, et vous pouvez en savoir plus sur les attributs SAML disponibles et les exigences de réponse.

À propos de la configuration SAML

Pour utiliser l’authentification unique (SSO) SAML pour vous authentifier auprès de GitHub, vous devez configurer à la fois votre fournisseur d’identité SAML externe (IdP) et votre entreprise ou votre organisation sur GitHub. Dans une configuration SAML, GitHub fonctionne en tant que fournisseur de services SAML (SP). Pour plus d'informations sur l'authentification pour votre entreprise, consultez « Notions de base de la gestion des identités et des accès ».

GitHub fournit une intégration en fonction de la spécification SAML 2.0. Pour plus d’informations, consultez le Wiki SAML sur le site web OASIS.

Vous devez saisir des valeurs uniques provenant de votre fournisseur d’identité SAML (IdP) lors de la configuration de l’authentification unique SAML pour GitHub, et vous devez également saisir des valeurs uniques provenant de GitHub sur votre IdP.

Métadonnées SAML

Les métadonnées SP pour GitHub Enterprise Cloud sont disponibles pour les organisations comme pour les entreprises disposant du SSO SAML. GitHub utilise la liaison urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST.

Si vous utilisez Enterprise Managed Users, vous pouvez uniquement activer l’authentification unique SAML au niveau de l’entreprise.

Organisations

Vous pouvez configurer l'authentification unique SAML pour une organisation individuelle dans votre entreprise. Vous pouvez également configurer l’authentification unique SAML pour une organisation si vous utilisez une organisation individuelle sur GitHub Enterprise Cloud et n’utilisez pas de compte d’entreprise. Pour plus d’informations, consultez « Gestion de l’authentification unique SAML pour votre organisation ».

Les métadonnées SP pour une organisation sur GitHub sont disponibles à l’adresse https://github.com/orgs/ORGANIZATION/saml/metadata, où ORGANIZATION est le nom de votre organisation sur GitHub.

ValeurAutres nomsDescriptionExemple
ID d'entité SPSP URL, restriction d'audienceURL de niveau supérieur de votre organisation sur GitHub.comhttps://github.com/orgs/ORGANIZATION
URL Assertion Consumer Service (ACS) du fournisseur de serviceURL de réponse, de destinataire ou de destinationURL où l'IdP envoie des réponses SAMLhttps://github.com/orgs/ORGANIZATION/saml/consume
URL de SSO du fournisseur de services (SP)
URL à laquelle le fournisseur d’identité commence l’authentification uniquehttps://github.com/orgs/ORGANIZATION/sso

Entreprises

Selon votre environnement, les métadonnées SP d’une entreprise sur GitHub Enterprise Cloud sont disponibles à l’une des adresses suivantes :

  • https://github.com/enterprises/ENTERPRISE/saml/metadata, où ENTERPRISE est le nom de votre entreprise
  • https://SUBDOMAIN.ghe.com/enterprises/SUBDOMAIN/saml/metadata, où SUBDOMAINest le sous-domaine de votre entreprise
ValeurAutres nomsDescriptionExemple
ID d'entité SPSP URL, restriction d'audienceURL de niveau supérieur pour votre entreprise sur GitHub.comhttps://github.com/enterprises/ENTERPRISE
URL Assertion Consumer Service (ACS) du fournisseur de serviceURL de réponse, de destinataire ou de destinationURL où l'IdP envoie des réponses SAMLhttps://github.com/enterprises/ENTERPRISE/saml/consume
URL de SSO du fournisseur de services (SP)
URL à laquelle le fournisseur d’identité commence l’authentification uniquehttps://github.com/enterprises/ENTERPRISE/sso

Attributs SAML

Les attributs SAML suivants sont disponibles pour GitHub.

NomObligatoireDescription
NameIDIdentificateur d'utilisateur persistant. Il est possible d'utiliser n'importe quel format d'identificateur de nom persistant.
Si vous utilisez une entreprise avec Enterprise Managed Users, GitHub normalise l’élément NameID à utiliser comme nom d’utilisateur, sauf si l’une des autres assertions est fournie. Pour plus d’informations, consultez « Considérations relatives au nom d'utilisateur pour une authentification externe ».

[!NOTE] Il est important d’utiliser un identificateur explicite et persistant. L’utilisation d’un format d’identificateur temporaire comme urn:oasis:names:tc:SAML:2.0:nameid-format:transient entraîne une nouvelle liaison des comptes à chaque connexion, ce qui peut nuire à la gestion des autorisations. | | SessionNotOnOrAfter | | Date à laquelle GitHub invalide la session associée. Après l’invalidation, la personne doit s’authentifier une fois de plus pour accéder aux ressources de votre entreprise. Pour plus d’informations, consultez « Durée et délai d’expiration de session ». | | | | full_name | | Si vous configurez l’authentification unique SAML pour une entreprise et que vous utilisez Enterprise Managed Users, le nom complet de l’utilisateur à afficher sur la page de profil de l’utilisateur. | | emails | | Adresses e-mail de l’utilisateur. Si vous synchronisez l’utilisation des licences entre GitHub Enterprise Server et GitHub Enterprise Cloud, GitHub Connect utilise emails pour identifier des utilisateurs uniques entre les produits. Pour plus d’informations, consultez « Synchronisation de l’utilisation des licences de GitHub Enterprise Server vers le cloud ». | | public_keys | | Si vous configurez l’authentification unique SAML pour une entreprise et que vous utilisez Enterprise Managed Users, les clés SSH publiques pour l’utilisateur. Vous pouvez spécifier plus d'une clé. | | gpg_keys | | Si vous configurez l’authentification unique SAML pour une entreprise et que vous utilisez Enterprise Managed Users, les clés GPG pour l’utilisateur. Vous pouvez spécifier plus d'une clé. |

Pour spécifier plusieurs valeurs pour un même attribut, utilisez plusieurs éléments <saml2:AttributeValue>.

<saml2:Attribute FriendlyName="public_keys" Name="urn:oid:1.2.840.113549.1.1.1" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
    <saml2:AttributeValue>ssh-rsa LONG KEY</saml2:AttributeValue>
    <saml2:AttributeValue>ssh-rsa LONG KEY 2</saml2:AttributeValue>
</saml2:Attribute>

Exigences en matière de réponse SAML

GitHub exige que le message de réponse de votre fournisseur d’identité réponde aux exigences suivantes.

  • Votre IdP doit fournir l'élément <Destination> dans le document de réponse racine et correspondre à l'URL ACS uniquement lorsque le document de réponse racine est signé. Si votre IdP signe l’assertion, GitHub ignorera l’assertion.

  • Votre fournisseur d'identité doit toujours fournir l'élément <Audience> dans le cadre de l'élément <AudienceRestriction>. La valeur doit correspondre à votre EntityId pour GitHub.

    • Si vous configurez SAML pour une organisation, cette valeur est https://github.com/orgs/ORGANIZATION.
    • Si vous configurez SAML pour une entreprise, cette URL est https://github.com/enterprises/ENTERPRISE or https://SUBDOMAIN.ghe.com/enterprises/SUBDOMAIN.
  • Votre IdP doit fournir une unique assertion dans la réponse, accompagnée d’une signature numérique. Vous pouvez accomplir cela en signant l’élément <Assertion> ou en signant l’élément <Response>.

  • Votre fournisseur d'identité doit fournir un élément <NameID> dans le cadre de l'élément <Subject>. Vous pouvez utiliser n'importe quel format d'identificateur de nom persistant.

  • Votre fournisseur d’identité doit inclure l’attribut Recipient, qui doit être défini sur l’URL ACS. L'exemple suivant illustre l'attribut.

    <samlp:Response ...>
      <saml:Assertion ...>
        <saml:Subject>
          <saml:NameID ...>...</saml:NameID>
          <saml:SubjectConfirmation ...>
            <saml:SubjectConfirmationData Recipient="https://github.com/enterprises/ENTERPRISE/saml/consume" .../>
          </saml:SubjectConfirmation>
        </saml:Subject>
        <saml:AttributeStatement>
          <saml:Attribute FriendlyName="USERNAME-ATTRIBUTE" ...>
            <saml:AttributeValue>monalisa</saml:AttributeValue>
          </saml:Attribute>
        </saml:AttributeStatement>
      </saml:Assertion>
    </samlp:Response>
    

Durée et délai d'expiration de session

Pour empêcher une personne de s’authentifier auprès de votre IdP et de rester autorisée indéfiniment, GitHub invalide régulièrement la session de chaque compte d’utilisateur ayant accès aux ressources de votre entreprise. Après l’invalidation, la personne doit s’authentifier à nouveau auprès de votre fournisseur d’identité.

Par défaut, si votre fournisseur d’identité n’affirme pas de valeur pour l’attribut SessionNotOnOrAfter , GitHub invalide une session 24 heures après l’authentification réussie avec votre fournisseur d’identité.

GitHub prend en charge une durée de session personnalisée si votre IdP permet de configurer un SessionNotOnOrAfter attribut et une valeur.

Si vous définissez une valeur de durée de session personnalisée inférieure à 24 heures, GitHub vous pouvez inviter des personnes à s’authentifier chaque fois qu’une GitHub redirection est lancée.

Pour éviter les erreurs d’authentification, nous vous recommandons une durée minimale de session de 4 heures. Pour plus d’informations, consultez « Résolution des problèmes d’authentification SAML ».

Remarque

Microsoft Entra ID (anciennement Azure AD) ** ne prend pas en charge l’attribut SessionNotOnOrAfter**. En outre, la stratégie de durée de vie configurable pour les jetons SAML émis par Entra ID ne contrôle pas le délai d’expiration de session pour GitHub.