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-Antworten 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.
Warning
- 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.
-
Klicken Sie in der oberen rechten Ecke von GitHub Enterprise Server auf Ihr Profilfoto und dann auf Unternehmenseinstellungen.
-
Klicken Sie auf der linken Seite der Seite in der Randleiste des Enterprise-Kontos auf Richtlinien
-
Klicke unter Richtlinien auf Optionen.
-
Wähle unter „SAML debugging“ die Dropdownliste aus, und klicke auf Enabled (Aktiviert).
-
Versuche, sich über den SAML-IdP bei Ihre GitHub Enterprise Server-Instance anzumelden.
-
Überprüfen Sie die Debuggingausgabe in dem systemd-Journal für
github-unicorn
auf Ihre GitHub Enterprise Server-Instance. Weitere Informationen findest du unter Informationen zu Systemprotokollen. -
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 finden Sie 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 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 finden Sie 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.