Skip to main content

Référence de configuration SAML

Vous pouvez examiner les métadonnées SAML pour votre instance GitHub Enterprise Server, et vous pouvez découvrir plus en détail les attributs SAML disponibles et les exigences en matière de réponses.

À propos de la configuration SAML

Pour utiliser l’authentification unique (SSO) SAML pour l’authentification sur GitHub Enterprise Server, vous devez configurer votre fournisseur d’identité (IdP) SAML externe et votre instance GitHub Enterprise Server. Dans une configuration SAML, GitHub Enterprise Server fonctionne en tant que fournisseur de services SAML. Pour plus d'informations sur l'authentification pour votre entreprise, consultez « À propos de la gestion de l'identité et de l'accès ».

GitHub Enterprise Server fournit une intégration conformément à la spécification SAML 2.0. Pour plus d'informations, consultez le Wiki SAML sur le site web OASIS.

Vous devez entrer des valeurs uniques à partir de votre fournisseur d'identité SAML lors de la configuration de l'authentification unique SAML pour GitHub Enterprise Server, et vous devez également entrer des valeurs uniques à partir de GitHub Enterprise Server sur votre fournisseur d'identité.

Métadonnées SAML

Les métadonnées du fournisseur de services pour votre instance GitHub Enterprise Server sont disponibles sur http(s)://HOSTNAME/saml/metadata, où HOSTNAME est le nom d'hôte de votre instance. GitHub Enterprise Server utilise la liaison urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST.

ValeurAutres nomsDescriptionExemple
ID d'entité de fournisseur de servicesURL du fournisseur de services, restriction d'audienceURL de niveau supérieur pour GitHub Enterprise Serverhttp(s)://HOSTNAME
URL Assertion Consumer Service (ACS) du fournisseur de serviceURL de réponse, de destinataire ou de destinationURL où l'IdP envoie des réponses SAMLhttp(s)://HOSTNAME/saml/consume
URL d'authentification unique du fournisseur de services
URL à laquelle le fournisseur d'identité commence l'authentification uniquehttp(s)://HOSTNAME/sso

Attributs SAML

Les attributs SAML suivants sont disponibles pour GitHub Enterprise Server. Vous pouvez modifier les noms d'attributs dans la Management Console, à l'exception de l'attribut administrator. Pour plus d'informations, consultez « Géstion de votre instance à partir de l’IU WEB. ».

NomObligatoireDescription
NameIDIdentificateur d'utilisateur persistant. Il est possible d'utiliser n'importe quel format d'identificateur de nom persistant. GitHub Enterprise Server normalise l'élément NameID à utiliser en tant que 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 ».

Remarque : 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.
SessionNotOnOrAfterLa date à laquelle GitHub Enterprise Server invalide la session associée. Après l'invalidation, la personne doit s'authentifier une fois de plus pour accéder à votre instance GitHub Enterprise Server. Pour plus d'informations, consultez « Durée et délai d'expiration de session ».
administratorLorsque la valeur est true, GitHub Enterprise Server considère automatiquement l’utilisateur comme étant un administrateur de site. La définition de cet attribut sur autre chose que true entraîne une rétrogradation, dans la mesure où la valeur n'est pas vide. Si cet attribut est omis ou que sa valeur reste vide, le rôle de l'utilisateur est inchangé.
usernameNom d’utilisateur pour votre instance GitHub Enterprise Server.
full_nameLe nom complet de l’utilisateur à afficher sur la page de profil de l’utilisateur.
emailsAdresses e-mail de l’utilisateur. Vous pouvez spécifier plusieurs adresses.
public_keysLes clés SSH publiques pour l’utilisateur. Vous pouvez spécifier plus d'une clé.
gpg_keysLes 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 Enterprise Server nécessite 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 fournisseur d'identité signe l'assertion, GitHub Enterprise Server ignore 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 Enterprise Server. Cette valeur est l’URL par laquelle vous accédez à GitHub, comme http(s)://HOSTNAME.

  • Votre fournisseur d'identité doit protéger chaque assertion dans la réponse avec une signature numérique. Pour ce faire, vous pouvez signer chaque élément <Assertion> individuel ou 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://HOSTNAME/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 fournisseur d'identité et de rester autorisée indéfiniment, GitHub Enterprise Server invalide régulièrement la session pour chaque compte d'utilisateur ayant accès à votre instance GitHub Enterprise Server. 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 Enterprise Server invalide une session une semaine après l'authentification réussie auprès de votre fournisseur d'identité.

GitHub Enterprise Server prend en charge une durée de session personnalisée si votre fournisseur d'identité fournit la possibilité de configurer un attribut et une valeur SessionNotOnOrAfter , et si cet attribut est inclus dans les réponses SAML. Si votre fournisseur d'identité n'autorise pas d'attribut SessionNotOnOrAfter, un administrateur de site peut configurer un délai d'expiration de session SAML personnalisé pour tous les utilisateurs de votre instance à l'aide de la commande ghe-config saml.default-session-expiration [seconds] dans le Shell d'administration .

Si vous définissez une valeur de durée de session personnalisée inférieure à 24 heures, GitHub Enterprise Server peut inviter les utilisateurs à s'authentifier chaque fois que GitHub Enterprise Server lance une redirection.

Quelle que soit la méthode d’authentification utilisée sur votre instance, GitHub Enterprise Server termine une session utilisateur après deux semaines d’inactivité continue.

Note

Pour Microsoft Entra ID (précédemment appelé Azure AD), la stratégie de durée de vie configurable pour les jetons SAML ne contrôle pas le délai d'expiration de session pour GitHub Enterprise Server.