Informationen zur SAML-Konfiguration
Wenn Sie das einmalige Anmelden (Single Sign-On, SSO) mit SAML zur Authentifizierung bei GitHub Enterprise Server verwenden möchten, müssen Sie sowohl Ihren externen SAML-Identitätsanbieter (Identity Provider, IdP) und Ihre GitHub Enterprise Server-Instance konfigurieren. In einer SAML-Konfiguration dient GitHub Enterprise Server als SAML-Dienstanbieter (Service Provider, SP). Weitere Informationen zur Authentifizierung für Ihr Unternehmen finden Sie unter „Informationen zur Identitäts- und Zugriffsverwaltung“.
GitHub Enterprise Server stellt die Integration gemäß der SAML 2.0-Spezifikation bereit. Weitere Informationen finden Sie im SAML-Wiki auf der OASIS-Website.
Sie müssen eindeutige Werte für Ihren SAML-IdP eingeben, wenn Sie SAML-SSO für GitHub Enterprise Server konfigurieren, und Sie müssen auch eindeutige Werte aus GitHub Enterprise Server bei Ihrem IdP eingeben. Weitere Informationen zur Authentifizierung für
SAML-Metadaten
Die Metadaten des Dienstanbieters für Ihre GitHub Enterprise Server-Instance sind unter http(s)://HOSTNAME/saml/metadata
verfügbar, wobei HOSTNAME der Name deiner Instanz ist. GitHub Enterprise Server verwendet die Bindung urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST
.
Wert | Andere Namen | BESCHREIBUNG | Beispiel |
---|---|---|---|
Entitäts-ID des SP | Dienstanbieter-URL, Einschränkung der Zielgruppe | Deine URL der obersten Ebene für GitHub Enterprise Server | http(s)://HOSTNAME |
Assertionsverbraucherdienst-URL (ACS) des SP | Antwort-, Empfänger- oder Ziel-URL | URL, an die der IdP SAML-Antworten sendet | http(s)://HOSTNAME/saml/consume |
SSO-URL (einmaliges Anmelden) des SP | |||
URL, an der der IdP mit dem SSO-Prozess beginnt | http(s)://HOSTNAME/sso |
SAML-Attribute
Die folgenden SAML-Attribute sind für GitHub Enterprise Server verfügbar. Du kannst die Attributnamen in der Verwaltungskonsole ändern (mit Ausnahme des administrator
-Attributs). Weitere Informationen finden Sie unter Verwalten Ihrer Instanz über die Web-Benutzeroberfläche.
Name | Erforderlich | BESCHREIBUNG |
---|---|---|
NameID | Ein persistenter Benutzerkennzeichner. Es kann ein beliebiges Format für persistente Namenskennzeichner verwendet werden. GitHub Enterprise Server das NameID -Element, damit es als Benutzername verwendet wird, es sei denn, es wird eine der alternativen Assertionen angegeben. Weitere Informationen finden Sie unter Überlegungen zum Benutzernamen für die externe Authentifizierung.Hinweis: Es ist wichtig, einen visuell lesbaren, beständigen Bezeichner zu verwenden. Die Verwendung eines vorübergehenden Bezeichnerformats urn:oasis:names:tc:SAML:2.0:nameid-format:transient führt dazu, dass Konten bei jeder Anmeldung erneut verknüpft werden, was sich nachteilig auf die Autorisierungsverwaltung auswirken kann. | |
SessionNotOnOrAfter | Das Datum, an dem GitHub Enterprise Server 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 finden Sie unter Sitzungsdauer und Timeout. | |
administrator | Wenn der Wert true lautet, wird der Benutzer von GitHub Enterprise Server automatisch zu einem Websiteadministrator hochgestuft. Wenn das Attribut auf alles außer true 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. | |
username | Der Benutzername für Ihre GitHub Enterprise Server-Instance. | |
emails | Die E-Mail-Adressen für den Benutzer bzw. die Benutzerin. Du kannst mehrere Adressen angeben. Wenn du die Lizenznutzung zwischen GitHub Enterprise Server und GitHub Enterprise Cloud synchronisierst, verwendet GitHub Connect emails , um eindeutige Benutzer*innen in verschiedenen Produkten zu identifizieren. Weitere Informationen finden Sie unter Synchronisieren der Lizenzverwendung zwischen GitHub Enterprise Server und GitHub Enterprise Cloud. | |
public_keys | Die öffentlichen SSH-Schlüssel für den Benutzer bzw. für die Benutzerin. Du kannst mehr als einen Schlüssel angeben. | |
gpg_keys | Die GPG-Schlüssel für den Benutzer bzw. für die Benutzerin. Du kannst mehr als einen Schlüssel angeben. |
Verwende mehrere <saml2:AttributeValue>
-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 Enterprise Server muss die Antwortnachricht von deinem IdP die folgenden Anforderungen erfüllen.
-
Dein IdP musst das Element
<Destination>
im Stammantwortdokument bereitstellen und nur dann mit der ACS-URL übereinstimmen, wenn das Stammantwortdokument signiert ist. Wenn dein IdP die Assertion signiert, ignoriert GitHub Enterprise Server die Assertion. -
Dein IdP muss das
<Audience>
-Element immer als Teil des<AudienceRestriction>
-Elements bereitstellen. Der Wert muss mit IhrerEntityId
für GitHub Enterprise Server übereinstimmen. Dieser Wert ist die URL, über die Sie auf Ihre GitHub Enterprise Server-Instance zugreifen, z. B.http(s)://HOSTNAME
. -
Dein IdP muss jede Assertion in der Antwort mit einer digitalen Signatur schützen. Du kannst dies tun, indem du jedes einzelne
<Assertion>
-Element oder das<Response>
-Element signierst. -
Dein IdP muss ein
<NameID>
-Element als Teil des<Subject>
-Elements bereitstellen. Du kannst ein beliebiges Format für beständige Namensbezeichner verwenden. -
Dein IdP muss das
Recipient
-Attribut enthalten, das auf die ACS-URL festgelegt werden 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>
Sitzungsdauer und Timeout
Um zu verhindern, dass eine Person sich bei deinem IdP authentifiziert und auf unbestimmte Zeit autorisiert bleibt, macht GitHub Enterprise Server 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 Ihr IdP keinen Wert für das SessionNotOnOrAfter
-Attribut angibt, macht GitHub Enterprise Server eine Sitzung eine Woche nach der erfolgreichen Authentifizierung bei Ihrem IdP standardmäßig ungültig.
GitHub Enterprise Server unterstützt eine angepasste Sitzungsdauer, wenn Ihr IdP die Möglichkeit bietet, ein SessionNotOnOrAfter
-Attribut und einen Wert zu konfigurieren, und wenn dieses Attribut in SAML-Antworten enthalten ist. Wenn Ihr IdP kein SessionNotOnOrAfter
-Attribut zulässt, kann ein Websiteadministrator ein benutzerdefiniertes SAML-Sitzungstimeout für alle Benutzer in Ihrer Instanz konfigurieren, indem er den ghe-config saml.default-session-expiration [seconds]
-Befehl in der administrativen Shell verwendet.
Wenn Sie einen angepassten Sitzungsdauerwert von weniger als 24 Stunden angeben, könnte es sein, dass GitHub Enterprise Server Personen dazu auffordert, sich jedes Mal zu authentifizieren, wenn GitHub Enterprise Server eine Umleitung initiiert.
Unabhängig von der für Ihre Instanz verwendeten Authentifizierungsmethode werden GitHub Enterprise Server nach zwei Wochen fortlaufender Inaktivität eine Benutzersitzung beendet.
Hinweise:
- Für Microsoft Entra ID (früher bekannt als Azure AD) steuert die konfigurierbare Lebensdauerrichtlinie für SAML-Token nicht die Sitzungstimeouts für GitHub Enterprise Server.
- Okta sendet das
SessionNotOnOrAfter
-Attribut bei der SAML-Authentifizierung bei GitHub Enterprise Server derzeit nicht. Wende dich an Okta, um weitere Informationen zu erhalten.