Skip to main content

SAML-Authentifizierung

Wenn du SAML Single Sign-On (SSO) verwendest und sich Personen nicht authentifizieren können, um auf GitHub zuzugreifen, kannst du das Problem behandeln.

Informationen zu Problemen bei der SAML-Authentifizierung

GitHub Enterprise Server protokolliert Fehlermeldungen für fehlgeschlagene SAML-Authentifizierung in den systemd journal logs für den github-unicorn-Container. Sie können die Antworten in diesem -Protokoll überprüfen und Sie können auch eine ausführlichere Protokollierung konfigurieren.

Weitere Informationen zu den Anforderungen für SAML-Anforderungen findest du unter Referenz zur SAML-Konfiguration.

Konfigurieren von SAML-Debugging

Du kannst GitHub Enterprise Server so konfigurieren, dass für jeden SAML-Authentifizierungsversuch ausführliche Debuggingprotokolle geschrieben werden. Möglicherweise kannst du fehlgeschlagene Authentifizierungsversuche mit dieser zusätzlichen Ausgabe beheben.

Warnungen:

  • Aktiviere SAML-Debugging nur vorübergehend, und deaktiviere das Debuggen unmittelbar nach Abschluss der Problembehandlung. Wenn Sie die Fehlersuche aktiviert lassen, nimmt die Größe der -Protokolle viel schneller als üblich zu, was sich negativ auf die Leistung von GitHub Enterprise Server auswirken kann.
  • Teste neue Authentifizierungseinstellungen für Ihre GitHub Enterprise Server-Instance in einer Stagingumgebung, bevor du die Einstellungen in deiner Produktionsumgebung anwendest. Weitere Informationen finden Sie unter Testinstanz einrichten.
  1. Klicken Sie in der oberen rechten Ecke von GitHub Enterprise Server auf Ihr Profilfoto und dann auf Unternehmenseinstellungen.

    Screenshot des Dropdownmenüs, das angezeigt wird, wenn du auf GitHub Enterprise Server auf das Profilfoto klickst. Die Option „Unternehmenseinstellungen “ ist dunkelorange umrandet.

  2. Klicken Sie auf der linken Seite der Seite in der Randleiste des Enterprise-Kontos auf Richtlinien

  3. Klicke unter Richtlinien auf Optionen.

  4. Wähle unter „SAML debugging“ die Dropdownliste aus, und klicke auf Enabled (Aktiviert).

  5. Versuche, sich über den SAML-IdP bei Ihre GitHub Enterprise Server-Instance anzumelden.

  6. Überprüfen Sie die Debuggingausgabe in dem systemd-Journal für github-unicorn auf Ihre GitHub Enterprise Server-Instance. Weitere Informationen sind unter „Informationen zu Systemprotokollen“ zu finden.

  7. Wenn du mit der Problembehandlung fertig bist, wähle die Dropdownliste aus, und klicke auf Disabled (Deaktiviert).

Decodieren von Antworten

Einige Ausgaben in dem systemd-Journal für github-unicorn können Base64-codiert sein. Du kannst auf die Verwaltungsshell zugreifen und das base64-Hilfsprogramm in Ihre GitHub Enterprise Server-Instance verwenden, um diese Antworten zu decodieren. Weitere Informationen findest du unter Auf die Verwaltungsshell (SSH) zugreifen.

Führen Sie zum Decodieren der Ausgabe den folgenden Befehl aus, indem Sie ENCODED_OUTPUT durch die codierte Ausgabe aus dem Protokoll ersetzen.

base64 --decode ENCODED_OUTPUT

Fehler: „Another user already owns the account“ (Ein anderer Benutzer besitzt das Konto bereits)

Wenn sich eine Benutzerin/ein Benutzer zum ersten Mal mit der SAML-Authentifizierung bei Ihre GitHub Enterprise Server-Instance anmeldet, erstellt GitHub Enterprise Server ein Benutzerkonto in der Instanz und ordnet die SAML-NameID und das SAML-nameid-format dem Konto zu.

Wenn sich die Benutzerin/der Benutzer erneut anmeldet, vergleicht GitHub Enterprise Server die Zuordnung der Werte des Kontos für NameID und nameid-format mit der Antwort des IdP. Wenn die Werte für NameID und nameid-format in der Antwort des IdP nicht mehr mit denen übereinstimmen, die GitHub Enterprise Server für die Benutzerin/den Benutzer erwartet, wird die Anmeldung nicht erfolgreich durchgeführt. Dem Benutzer wird die folgende Meldung angezeigt:

Another user already owns the account (Ein anderer Benutzer besitzt das Konto bereits) Bitte den Administrator, das Authentifizierungsprotokoll zu überprüfen.

In der Nachricht wird in der Regel angegeben, dass sich der Benutzername oder die E-Mail-Adresse der Person beim IdP geändert hat. Vergewissere dich, dass die Zuordnung von NameID und nameid-format für das Benutzerkonto in GitHub Enterprise Server mit den NameID- und nameid-format-Werten beim IdP übereinstimmt. Weitere Informationen findest du unter Aktualisieren der SAML-NameID von Benutzer*innen.

Wenn die SAML-Antwort nicht signiert ist oder die Signatur nicht mit dem Inhalt übereinstimmt, wird im Authentifizierungsprotokoll die folgende Fehlermeldung angezeigt:

Wenn der Recipient nicht mit der ACS-URL für Ihre GitHub Enterprise Server-Instance übereinstimmt, wird eine der folgenden beiden Fehlermeldungen im Authentifizierungsprotokoll angezeigt, wenn ein Benutzer versucht, sich zu authentifizieren.

Recipient in the SAML response must not be blank.
Recipient in the SAML response was not valid.

Vergewissere dich, dass du den Wert für Recipient beim IdP auf die vollständige ACS-URL für Ihre GitHub Enterprise Server-Instance festlegst. Beispiel: https://ghe.corp.example.com/saml/consume.

Fehler: „SAML Response is not signed or has been modified“ (SAML-Antwort ist nicht signiert oder wurde geändert)

Wenn der IdP die SAML-Antwort nicht signiert oder die Signatur nicht mit dem Inhalt übereinstimmt, wird die folgende Fehlermeldung im Authentifizierungsprotokoll angezeigt.

SAML Response is not signed or has been modified.

Konfiguriere die signierten Assertionen für die GitHub Enterprise Server-Anwendung bei deinem IdP.

Fehler: „Audience is invalid“ (Zielgruppe ist ungültig) oder „No assertion found“ (Keine Assertion gefunden)

Wenn die Antwort des IdP einen fehlenden oder falschen Wert für Audience aufweist, wird die folgende Fehlermeldung im Authentifizierungsprotokoll angezeigt.

Audience is invalid. Audience attribute does not match https://YOUR-INSTANCE-URL

Lege den Wert für Audience bei deinem IdP auf die EntityId für Ihre GitHub Enterprise Server-Instance fest. Dabei handelt es sich um die vollständige URL zu deiner Instanz. Beispiel: https://ghe.corp.example.com.

Fehler: „Current time is earlier than NotBefore condition“ (Aktuelle Zeit liegt vor notBefore-Bedingung)

Dieser Fehler kann auftreten, wenn der Zeitunterschiede zwischen deinem IdP und GitHub Enterprise Server zu groß ist, was bei selbstgehosteten IdPs häufig vorkommt.

Um dieses Problem zu verhindern, wird empfohlen, die Appliance möglichst auf dieselbe NTP-Quelle (Network Time Protocol) wie den IdP zu verweisen. Wenn dieser Fehler auftritt, achte darauf, dass die Zeit auf deiner Appliance ordnungsgemäß mit deinem NTP-Server synchronisiert wird. Mit dem Befehl chronyc in der Verwaltungsshell können Sie die Zeit sofort synchronisieren. Weitere Informationen finden Sie unter Zeitsynchronisierung konfigurieren.

Wenn du ADFS als IdP verwendest, lege außerdem NotBeforeSkew in ADFS für GitHub auf 1 Minute fest. Wenn NotBeforeSkew auf 0 festgelegt ist, können selbst sehr kleine Zeitunterschiede, einschließlich Millisekunden, Authentifizierungsprobleme verursachen.