Skip to main content

Referenz zur SAML-Konfiguration

Du kannst SAML-Metadaten für Ihre GitHub Enterprise Server-Instance anzeigen und mehr über die verfügbaren SAML-Attribute und -Antwortanforderungen herausfinden.

Informationen zur SAML-Konfiguration

Wenn du Single Sign-On (SSO) mit SAML zur Authentifizierung bei GitHub verwenden möchtest, musst du deinen externen SAML-Identitätsanbieter und Ihre GitHub Enterprise Server-Instance konfigurieren. In einer SAML-Konfiguration dient GitHub als SAML-Dienstanbieter. Weitere Informationen zur Authentifizierung für dein Unternehmen findest du unter AUTOTITLE.

GitHub stellt die Integration gemäß der SAML 2.0-Spezifikation bereit. Weitere Informationen finden Sie im SAML-Wiki auf der OASIS-Website.

Du musst eindeutige Werte von deinem SAML-Identitätsanbieter eingeben, wenn du SAML-SSO für GitHub konfigurierst, und ebenso eindeutige Werte von GitHub in deinem Identitätsanbieter eingeben.

SAML-Metadaten

SAML-Attribute

Die folgenden SAML-Attribute sind für GitHub verfügbar. Du kannst die Attributnamen in der Verwaltungskonsole ändern (mit Ausnahme des -Attributs). Weitere Informationen findest du unter AUTOTITLE.

NameErforderlichBESCHREIBUNG
NameIDEin persistenter Benutzerkennzeichner. Es kann ein beliebiges Format für persistente Namenskennzeichner verwendet werden. GitHub das Element normalisieren, um es als Benutzername zu verwenden, es sei denn, es wird eine der alternativen Assertionen angegeben. Weitere Informationen finden Sie unter AUTOTITLE.

Es ist wichtig, einen visuell lesbaren, beständigen Bezeichner zu verwenden. Die Verwendung eines vorübergehenden Bezeichnerformats führt dazu, dass Konten bei jeder Anmeldung erneut verknüpft werden, was sich nachteilig auf die Autorisierungsverwaltung auswirken kann.
SessionNotOnOrAfterDas Datum, an dem GitHub die zugehörige Sitzung ungültig macht. Nach der Invalidierung muss die Person sich erneut authentifizieren, um auf Ihre GitHub Enterprise Server-Instance zuzugreifen. Weitere Informationen findest du unter Sitzungsdauer und Timeout.
administratorWenn der Wert erreicht ist, wird GitHub die benutzende Person automatisch zum Websiteadministrator hochstufen. Wenn das Attribut auf alles außer festgelegt wird, folgt eine Herabstufung, solange der Wert nicht leer ist. Wenn das Attribut ausgelassen wird oder der Wert leer bleibt, wird die Rolle des Benutzers bzw. der Benutzerin nicht geändert.
usernameDer Benutzername für Ihre GitHub Enterprise Server-Instance.
full_nameDer vollständige Name des Benutzer bzw. der Benutzerin auf der Benutzerprofilseite angezeigt.
emailsDie E-Mail-Adressen für die Benutzenden. Du kannst mehr als eine Adresse angeben. Wenn du die Lizenznutzung zwischen GitHub Enterprise Server und GitHub Enterprise Cloud synchronisierst, verwendet GitHub Connect , um eindeutige Benutzende in Produkten zu identifizieren. Weitere Informationen finden Sie unter AUTOTITLE.
public_keysDie öffentlichen SSH-Schlüssel für dendie Benutzerin angezeigt. Du kannst mehr als einen Schlüssel angeben.
gpg_keysDie GPG-Schlüssel für dendie Benutzerin angezeigt. Du kannst mehr als einen Schlüssel angeben.

Verwende mehrere -Elemente, um mehrere Werte für ein Attribut anzugeben.

<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>

SAML-Antwortanforderungen

Bei GitHub muss die Antwortnachricht von deinem Identitätsanbieter die folgenden Anforderungen erfüllen.

  • Dein IdP muss das Element im Stammantwortdokument bereitstellen, und die ACS-URL muss nur übereinstimmen, wenn das Stammantwortdokument signiert ist. Wenn dein Identitätsanbieter die Behauptung signiert, ignoriert GitHub die Behauptung.

  • Ihr IdP muss immer das als Teil des bereitstellen. Der Wert muss mit deiner für GitHub übereinstimmen. Dieser Wert ist die URL, über die du auf GitHub zugreifst, z. B. .

  • Ihr Identitätsanbieter (IdP) muss in der Antwort eine einzelne Assertion mit einer digitalen Signatur bereitstellen. Hierfür können Sie entweder das eine Element signieren oder das andere Element signieren.

  • Dein IdP muss ein -Element als Teil des -Elements bereitstellen. Du kannst ein beliebiges Format für beständige Namensbezeichner verwenden.

  • Ihr IdP muss das Attribut enthalten, welches auf die ACS-URL gesetzt sein muss. Im folgenden Beispiel wird das Attribut veranschaulicht.

    <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>
    

SAML-Signaturzertifikat für AuthnRequests

Wenn du GitHub Enterprise Server zum ersten Mal einrichtest und die Instanz startest, wird getrennt vom SAML-Zertifikat des IDP ein selbstsigniertes SAML-Signaturzertifikat generiert. Dieses Zertifikat wird zum Signieren von SAML--Elementen verwendet, die an den IdP gesendet werden. Das Zertifikat ist für zehn Jahre gültig. Es wird unter gespeichert, und du kannst Details im Base64-codierten Format unter anzeigen.

Wenn dein IdP das SAML-Signaturzertifikat überprüft oder SAML-verschlüsselte Assertionen aktiviert sind, treten bei Benutzenden möglicherweise Authentifizierungsprobleme auf, wenn das Zertifikat abläuft. Um das Ablaufdatum zu überprüfen, können GitHub Enterprise Server-Administrierende über SSH eine Verbindung mit dem Server herstellen und den folgenden Befehl ausführen. Weitere Informationen findest du unter Herstellen einer Verbindung mit der Verwaltungsshell über SSH.

sudo openssl pkcs12 -in /data/user/common/saml-sp.p12 -clcerts -nokeys -password pass: | sudo openssl x509 -noout -enddate

GitHub Enterprise Server-Administrierende können die folgenden Befehle in einer GitHub Enterprise Server-SSH-Sitzung ausführen, um dieses SAML-SP-Signaturzertifikat erneut zu generieren, wenn es abgelaufen und für den IdP oder verschlüsselte Assertionen erforderlich ist.

Hinweis

Die Befehle führen zu kurzen Unterbrechungen für die Benutzer, da der Dienst neu gestartet wird.

# Backup the old certificate
sudo cp /data/user/common/saml-sp.p12 /data/user/common/saml-sp.p12-$(date +%d%m%Y_%H%M%S)

saml_tempdir=$(sudo mktemp -d)
sudo openssl req -new -newkey rsa:4096 -days 3650 -nodes -x509 -sha256 -subj "/CN=github_enterprise" -keyout $saml_tempdir/saml.key -out $saml_tempdir/saml.crt
sudo openssl pkcs12 -export -inkey $saml_tempdir/saml.key -in $saml_tempdir/saml.crt -nodes -password pass: -out /data/user/common/saml-sp.p12
sudo rm -rf $saml_tempdir

sudo nomad stop github-unicorn
sudo nomad run -hcl1 /etc/nomad-jobs/github/unicorn.hcl

Sitzungsdauer und Timeout

Um zu verhindern, dass eine Person sich bei deinem Identitätsanbieter authentifiziert und auf unbestimmte Zeit autorisiert bleibt, macht GitHub die Sitzung für jedes Benutzerkonto mit Zugriff auf Ihre GitHub Enterprise Server-Instance in regelmäßigen Abständen ungültig. Nach der Invalidierung muss die Person sich erneut bei Ihrem IdP authentifizieren.

Wenn dein Identitätsanbieter keinen Wert für das -Attribut angibt, macht GitHub eine Sitzung eine Woche nach der erfolgreichen Authentifizierung bei deinem Identitätsanbieter standardmäßig ungültig.

GitHub unterstützt eine angepasste Sitzungsdauer, wenn dein Identitätsanbieter die Möglichkeit bietet, ein -Attribut und einen Wert zu konfigurieren, und wenn dieses Attribut in SAML-Antworten enthalten ist. Wenn Ihr IdP kein -Attribut zulässt, kann ein Websiteadministrator ein benutzerdefiniertes SAML-Sitzungstimeout für alle Benutzer in Ihrer Instanz konfigurieren, indem er den -Befehl in der administrativen Shell verwendet.

Wenn du einen angepassten Sitzungsdauerwert von weniger als 24 Stunden angibst, könnte es sein, dass GitHub Personen dazu auffordert, sich jedes Mal zu authentifizieren, wenn GitHub eine Umleitung initiiert.

Unabhängig von der für deine Instanz verwendeten Authentifizierungsmethode beendet GitHub Enterprise Server eine Benutzersitzung nach zwei Wochen Inaktivität.

Hinweis

Microsoft Entra ID (früher als Azure AD bezeichnet) ** unterstützt das attribut SessionNotOnOrAfter** nicht. Darüber hinaus hat die konfigurierbare Lebensdauerrichtlinie für SAML-Token, die von Entra ID ausgestellt werden, keine Kontrolle über das Sitzungstimeout für GitHub.