Wenn Du Benutzer authentifizieren möchtest, ohne sie Deinem Identitätsanbieter hinzuzufügen, kannst Du die integrierte Authentifizierung konfigurieren. Weitere Informationen findest Du unter „Integrierte Authentifizierung für Benutzer außerhalb Deines Identity Providers zulassen.“
Unterstützte SAML-Dienste
Wir bieten begrenzten Support für alle Identitätsanbieter, die den SAML 2.0 Standard implementieren. Offiziell unterstützen wir diese Identitätsanbieter, welche intern getestet wurden:
- Active Directory Federation Services (AD FS)
- Azure Active Directory (Azure AD)
- Okta
- OneLogin
- PingOne
- Shibboleth
GitHub Enterprise unterstützt keinen SAML Single-Logout. Um eine aktive SAML-Sitzung zu beenden, sollte sich der Benutzer direkt auf Deiner SAML-IdP abmelden.
Grundlegendes für Benutzernamen bei SAML
Jeder GitHub Enterprise Server-Benutzername wird nach Priorität geordnet durch eine der folgenden Assertions in der SAML-Antwort bestimmt:
- das benutzerdefinierte Attribut für den Benutzernamen, sofern definiert und vorhanden
- eine ggf. vorhandene Assertion
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name
- eine ggf. vorhandene Assertion
http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
- das Element
NameID
Das Element NameID
ist selbst dann erforderlich, wenn andere Attribute vorhanden sind.
Zwischen NameID
und dem GitHub Enterprise Server-Benutzernamen wird eine Zuordnung erstellt, daher sollte NameID
persistent, eindeutig und für den Lebenszyklus des Benutzers nicht änderbar sein.
GitHub Enterprise Server-Benutzernamen dürfen nur alphanumerische Zeichen und Bindestriche (-
) enthalten. GitHub Enterprise Server normalisiert nicht alphanumerische Zeichen im Benutzernamen Ihres Kontos zu einem Bindestrich. Beispielsweise wird der Benutzername gregory.st.john
zu gregory-st-john
normalisiert. Beachte, dass die normalisierten Benutzernamen weder mit einem Bindestrich beginnen noch darauf enden können. Darüber hinaus können sie nicht zwei aufeinanderfolgende Bindestriche enthalten.
Anhand von E-Mail-Adressen erstellte Benutzernamen werden anhand der normalisierten Zeichen erstellt, die dem Zeichen @
vorangehen.
Wenn mehrere Konten zum selben GitHub Enterprise Server-Benutzernamen normalisiert werden, wird nur das erste Benutzerkonto erstellt. Nachfolgende Benutzer mit demselben Benutzernamen können sich nicht anmelden.
In dieser Tabelle findest Du Beispiele dafür, wie Benutzernamen in GitHub Enterprise Server normalisiert werden:
Benutzername | Normalisierter Benutzername | Ergebnis |
---|---|---|
Ms.Bubbles | ms-bubbles | Dieser Benutzername wird erfolgreich erstellt. |
!Ms.Bubbles | -ms-bubbles | Dieser Benutzername wird nicht erstellt, da er mit einem Bindestrich beginnt. |
Ms.Bubbles! | ms-bubbles- | Dieser Benutzername wird nicht erstellt, da er mit einem Bindestrich endet. |
Ms!!Bubbles | ms--bubbles | Dieser Benutzername wird nicht erstellt, da er zwei aufeinanderfolgende Bindestriche enthält. |
Ms!Bubbles | ms-bubbles | Dieser Benutzername wird nicht erstellt. Obwohl der normalisierte Benutzername gültig ist, ist er bereits vorhanden. |
Ms.Bubbles@example.com | ms-bubbles | Dieser Benutzername wird nicht erstellt. Obwohl der normalisierte Benutzername gültig ist, ist er bereits vorhanden. |
Zwei-Faktor-Authentifizierung
Bei Verwendung von SAML oder CAS wird die Zwei-Faktor-Authentifizierung auf der GitHub Enterprise Server-Appliance weder unterstützt noch verwaltet, jedoch möglicherweise vom externen Authentifizierungsanbieter unterstützt. Die Erzwingung der Zwei-Faktor-Authentifizierung für Organisationen ist nicht verfügbar. Weitere Informationen zum Erzwingen der Zwei-Faktor-Authentifizierung für Organisationen findest Du unter „Zwei-Faktor-Authentifizierung in Deiner Organisation vorschreiben.“
SAML-Metadaten
Die Service Provider-Metadaten Ihrer GitHub Enterprise Server-Instanzen sind unter http(s)://[hostname]/saml/metadata
verfügbar.
Wenn Sie Ihren Identity Provider manuell konfigurieren möchten, lautet die Assertionsverbraucherdienst-URL (ACS) http(s)://[hostname]/saml/consume
. Dafür wird die Bindung urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
verwendet.
SAML-Attribute
Die folgenden Attribute sind verfügbar. Mit Ausnahme der administrator
-Attribute können Sie die Attributnamen in der Managementkonsole ändern.
Standardmäßiger Attributname | Typ | Beschreibung |
---|---|---|
NameID | Erforderlich | Ein persistenter Benutzerkennzeichner. Es kann ein beliebiges Format für persistente Namenskennzeichner verwendet werden. Das Element NameID wird für einen GitHub Enterprise Server-Benutzernamen verwendet, sofern keine der alternativen Assertions bereitgestellt wird. |
administrator | Optional | Wenn der Wert „true“ lautet, wird der Benutzer automatisch zu einem Administrator hochgestuft. Bei anderen oder nicht vorhandenen Werten wird der Benutzer auf ein normales Benutzerkonto zurückgestuft. |
Benutzername | Optional | Der GitHub Enterprise Server-Benutzername. |
full_name | Optional | Der Name des Benutzers, der auf seiner Profilseite angezeigt wird. Nach der Bereitstellung können Benutzer ihre Namen ändern. |
emails | Optional | Die E-Mail-Adressen für den Benutzer. Es können mehrere angegeben werden. |
public_keys | Optional | Die öffentlichen SSH-Schlüssel für den Benutzer. Es können mehrere angegeben werden. |
gpg_keys | Optional | Die GPG-Schlüssel für den Benutzer. Es können mehrere angegeben werden. |
SAML-Einstellungen konfigurieren
-
Klicke in der oberen rechten Ecke einer beliebigen Seite auf .
-
Klicke auf der linken Seitenleiste auf Managementkonsole.
-
Klicke auf der linken Seitenleiste auf Authentication (Authentifizierung).
-
Wählen Sie SAML aus.
-
Wähle optional Allow built-in authentication (Integrierte Authentifizierung zulassen) um Benutzer zur Verwendung der integrierten Authentifizierung einzuladen, wenn sie nicht zum Identitätsanbieter von Ihre GitHub Enterprise Server-Instanz gehören.
-
Wählen Sie optional zum Aktivieren des Unsolicited-Response-SSOs die Option IdP initiated SSO (IdP-initiiertes SSO) aus. GitHub Enterprise Server antwortet auf eine von einem Identity Provider (IdP) initiierte unaufgeforderte Anforderung standardmäßig durch das Zurücksenden einer
AuthnRequest
an den IdP.Hinweis: Der Wert sollte bei unselected (Nicht ausgewählt) belassen werden. Sie sollten dieses Feature nur dann aktivieren, wenn Ihre SAML-Implementierung das vom Service Provider initiierte SSO nicht unterstützt und Sie vom GitHub Enterprise-Support dazu angewiesen werden.
-
Wählen Sie Disable administrator demotion/promotion (Hochstufen/Zurücksetzen des Administrators deaktivieren) aus, wenn Sie nicht möchten, dass Ihr SAML-Anbieter die Administratorrechte für Benutzer auf Ihre GitHub Enterprise Server-Instanz bestimmen kann.
-
Geben Sie im Feld Single sign-on URL (Single Sign-On-URL) den HTTP- oder HTTPS-Endpunkt für Ihren IdP für Single Sign-On-Anforderungen ein. Dieser Wert wird durch Ihre IdP-Konfiguration angegeben. Wenn der Host in Ihrem internen Netzwerk nicht verfügbar ist, müssen Sie Ihre GitHub Enterprise Server-Instanz ggf. zur Verwendung interner Nameserver konfigurieren.
-
Gib optional im Feld Issuer (Aussteller) den Namen Deines SAML-Ausstellers ein. Dadurch wird die Authentizität von Nachrichten verifiziert, die an Ihre GitHub Enterprise Server-Instanz gesendet werden.
-
Wählen Sie in den Dropdownmenüs Signature Method (Signaturmethode) und Digest Method (Digest-Methode) den von Ihrem SAML-Aussteller verwendeten Hashalgorithmus aus, um die Integrität der Anforderungen von Ihre GitHub Enterprise Server-Instanz zu verifizieren. Geben Sie das Format mit dem Dropdownmenü Name Identifier Format (Format für Namenskennzeichner) an.
-
Klicken Sie unter Verification certificate (Verifizierungszertifikat) auf Choose File (Datei auswählen), und wählen Sie ein Zertifikat aus, um Ihre SAML-Antworten vom IdP zu validieren.
-
Ändern Sie die SAML-Attributnamen bei Bedarf so, dass sie mit Ihrem IdP übereinstimmen, oder akzeptieren Sie die Standardnamen.
Zugriff auf Ihre GitHub Enterprise Server-Instanz widerrufen
Wenn Sie einen Benutzer von Ihrem Identity Provider entfernen, müssen Sie ihn zudem manuell sperren. Andernfalls kann er sich weiterhin mithilfe der Zugriffstoken oder SSH-Schlüssel authentifizieren. Weitere Informationen finden Sie unter „Benutzer sperren und entsperren“.
Anforderungen für die Antwortmeldung
Die Antwortmeldung muss die folgenden Anforderungen erfüllen:
- Das Element
<Destination>
muss im Root-Antwortdokument bereitgestellt werden und mit der ACS-URL übereinstimmen, und zwar genau dann, wenn das Root-Antwortdokument signiert ist. If the assertion is signed, it will be ignored. - Das Element
<Audience>
muss immer als Bestandteil des Elements<AudienceRestriction>
angegeben werden. Es muss zur GitHub Enterprise Server-Entity-ID passen. Dies ist die URL der GitHub Enterprise Server-Instanz, wie z.B.https://ghe.corp.example.com
. - Jede Assertion in der Antwort muss durch eine digitale Signatur geschützt sein. Dies kann erfolgen, indem jedes einzelne
<Assertion>
-Element signiert wird oder indem das<Response>
-Element signiert wird. - Ein
<NameID>
-Element muss als Bestandteil des<Subject>
-Elements bereitgestellt werden. Es kann ein beliebiges Format für persistente Namenskennzeichner verwendet werden. - Ein
Recipient
-Attribut muss vorhanden und auf die Assertionsverbraucherdienst-URL festgelegt sein. Ein Beispiel:
<samlp:Response ...>
<saml:Assertion ...>
<saml:Subject>
<saml:NameID ...>...</saml:NameID>
<saml:SubjectConfirmation ...>
<saml:SubjectConfirmationData Recipient="https://ghe.corp.example.com/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>
Fehlermeldungen
Wenn der Empfänger
nicht mit der Assertionsverbraucherdienst-URL übereinstimmt, wird im Authentifizierungsprotokoll die folgende Fehlermeldung angezeigt:
Recipient in the SAML response was not valid.
Wenn Recipient
kein Bestandteil der Antwortmeldung ist, wird im Authentifizierungsprotokoll die folgende Fehlermeldung angezeigt:
Recipient in the SAML response must not be blank.
Wenn die SAML-Antwort nicht signiert ist oder die Signatur nicht mit dem Inhalt übereinstimmt, wird im Authentifizierungsprotokoll die folgende Fehlermeldung angezeigt:
SAML Response is not signed or has been modified.
Wenn Audience
fehlt oder nicht mit der GitHub Enterprise Server-Entitäts-ID übereinstimmt, wird im Authentifizierungsprotokoll die folgende Fehlermeldung angezeigt:
Audience is invalid. Audience attribute does not match your_instance_url