2016-09-28 3 views
3

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:

SAMLException: NameID element must be present as part of the Subject in the Response message, please enable it in the IDP configuration

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

+0

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

+0

Danke, das ist eine gute Idee. Das beachte ich beim Debuggen. :) – hlpinform

Antwort

2

Gut gelöst, wir das Problem gelöst. sondern als „stand alone“ Schlüssel/Wert-Paar in der SAML-Assertion „header“

Während einer Live-Debugging wir, dass NameID bemerkt wurde nicht als SAML-Assertion Schlüssel/Wert-Paar Attribut senden.

So modifizierten wir unseren Code beiden möglichen Positionen innerhalb der SAML-Assertion zu decken und jetzt funktioniert es ganz gut. : D

Verwandte Themen