Wir entwickeln eine Web-Anwendung, die mehrere Login-Mechanismen wie LDAP, Kerberos, SAP Logon Ticket sowie SAML bietet.Problem mit SSO zwischen SAML SP und ADFS IdP
Dafür verwenden wir das Spring Security Framework, das (meistens) fantastisch funktioniert!
Vor einigen Monaten haben wir unsere Anwendung um SAML-Unterstützung erweitert und diese mit einem externen IdP (SSOcircle) getestet. Wir haben auch eng mit dem CEO von SSOcircle zusammengearbeitet, um uns zum Laufen zu bringen.
Alles funktionierte gut und wir dachten, wir könnten SAML mit unserem ersten echten Kunden registrieren.
Also haben wir einen Testserver (SP) auf einem Linux-Rechner eingerichtet und unseren Teil konfiguriert (wir haben dieses Dokument verwendet: http://docs.spring.io/spring-security-saml/docs/current/reference/html/chapter-idp-guide.html) und darauf gewartet, dass unser Kunde seinen Teil dazu leistet.
Aber als sie versuchten, SSO in unsere Anwendung (sie verwenden ADFS), stießen wir auf ein Problem.
Weil wir gerade eine von zwei Fehlermeldungen erhalten. Entweder ein
Authentifizierungsanforderung fehlgeschlagen: org.springframework.security.core.userdetails.UsernameNotFoundException: Leer Benutzernamen nicht erlaubt!
oder diese
Fehler beim Überprüfen der SAML-Nachricht org.opensaml.common.SAMLException: NameID Element als Teil des Subjekts in der Antwort Nachricht vorhanden sein muss, aktivieren Sie es bitte im IDP Konfiguration
Während der Fehlersuche stieß ich auf diesen anderen Threads hier auf Stackoverflow:
Configuring ADFS 3.0/SAML 2.0 to work with Spring Security for SSO integration
NameID element must be present as part of the Subject
Das Seltsame ist, dass die zweite Fehlermeldung (in Bezug auf die NameID) Element kommt nur, wenn wir die adfs Anspruch Regel aus „Outgoing Anspruch Typ“ auf "ändern Pass Through Anspruchsart ".
Im Moment habe ich keine Ahnung, wo ich meine Fehlersuche fortsetzen soll. Irgendwelche Ideen oder Gedanken zu diesem Thema?
Mit freundlichen Grüßen René
EDIT1: Ich habe einen Link auf die Debug-Log-Datei und unsere SAML-Sicherheitskonfigurations
EDIT2 attatched: Kennt jemand, ob es eine Möglichkeit, eine Zeitzone angeben, die sollte SAML verwenden? Momentan scheint die Zulu-Zeit die verwendete Zeitzone zu sein, obwohl unser Betriebssystem für die Verwendung von CET/CEST konfiguriert ist. Daher mussten wir responseSkew Parameter für die Anmeldung/Abmeldung verwenden.
EDIT3: Debug & Config entfernt, weil wir das Problem
Eine wilde Vermutung für diese „odd thing“: könnte es sein, dass, wenn Sie den Anspruch Regeltyp geändert, die Behauptung, dass auf NameID zur Karte wurde herausgefiltert ausgestellt wurde, die NameID von emittierten gestoppt. – Thuan
Danke, das ist eine gute Idee. Das beachte ich beim Debuggen. :) – hlpinform