SimpleSAMLphp-Statusinformationen gehen verloren

Lesezeit: 7 Minuten

Benutzeravatar von Andrew Cooper
Andreas Cooper

Ich habe einen Dienstanbieter eingerichtet bei https://biz.dev.originsystems.co.za. Ich habe einen IdP eingerichtet bei http://stage.originsystems.co.za.

Beim Testen der Authentifizierung mit dem Tool at https://biz.dev.originsystems.co.za/simplesaml/module.php/core/authenticate.php, alles funktioniert einwandfrei. Es kehrt mit den erforderlichen Attributen zur Dev-Site zurück und alles ist glücklich und fröhlich.

Wenn ich jedoch versuche, den IdP tatsächlich im Code zu treffen https://biz.dev.originsystems.co.za, werde ich zur Stage-Anmeldeseite weitergeleitet, aber nach der Anmeldung erhalte ich die Fehlermeldung „Statusinformationen verloren“. Ich erhalte folgende Debug-Informationen:

SimpleSAML_Error_NoState: NOSTATE

Backtrace:
2 /webdevroot/Updraft/web/external/System/SSO/simplesaml/lib/SimpleSAML/Auth/State.php:225 (SimpleSAML_Auth_State::loadState)
1 /webdevroot/Updraft/web/external/System/SSO/simplesaml/modules/saml/www/sp/saml2-acs.php:63 (require)
0 /webdevroot/Updraft/web/external/System/SSO/simplesaml/www/module.php:134 (N/A)

Ich habe alle Fehlerbehebungen durchgeführt, um die mich die Seite gebeten hat, aber die Situation bleibt bestehen.

Ich habe die Entwicklertools im Browser geöffnet und mir die Cookie-Informationen angesehen. Die Cookies für biz.dev.originsystems.co.za enthalten ein SimpleAMLAuthToken, also gehe ich davon aus, dass die Cookies funktionieren. Der Code, den ich verwende, um den IdP zu erreichen, lautet:

$as = new SimpleSAML_Auth_Simple("stage-sso-sp");
$as->requireAuth();
$attributes = $as->getAttributes();
print_r($attributes);

AKTUALISIEREN:

Hier noch ein paar Infos…

Ich wollte feststellen, ob das Problem bei der Einrichtung des IdP liegt, also habe ich begonnen, SSO Circle für den IdP zu verwenden. Die Statusinformationen gehen auch nach der Authentifizierung auf SSO Circle verloren. Ich denke, das Problem liegt irgendwo bei meinem Dienstanbieter-Setup für SimpleSAML. Hier ist, was passiert …

Wenn ich auf die Seite SimpleSAML Test Authentication Sources unter gehe https://biz.stage.originsystems.co.za/simplesaml Ich habe die folgenden Cookie-Werte …

Name                                       Value
SimpleSAMLAuthToken                        _a53569c0701dd02832532df14cf10cd0b2d9fcd6b6
biz.stage.originsystems.co.za              10fc356e0bfbf707af5fa5854c378755
ccof                                       RGN002
xbrF                                       84aadc624fc51c0c9340d45645c08643

Alles außer dem SimpleSAMLAuthToken stammt aus unserer Anwendung und sollte SimpleSAML nicht beeinflussen. Sobald ich zu SSO Circle umgeleitet und authentifiziert wurde, kehre ich zu meiner SimpleSAML-Seite zurück und das Auth-Token hat jetzt einen Wert von _39679e07cb1911e08b2bff3580a9929faddd07e9b6 und alle relevanten Informationen werden korrekt zurückgegeben. Die Protokolldatei zeigt die folgende Aktivität.

Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Received SAML2 Response from 'http://idp.ssocircle.com'.
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] No certificate in message when validating against fingerprint.
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Found 1 certificates in SAML2_Assertion
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Has 1 candidate keys for validation.
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Validation with key #0 succeeded.
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Filter config for http://idp.ssocircle.com->https://biz.stage.originsystems.co.za/simplesaml/module.php/saml/sp/metadata.php/default-sp: array (  0 =>   sspmod_core_Auth_Process_LanguageAdaptor::__set_state(array(     'langattr' => 'preferredLanguage',     'priority' => 90,  )),)
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Deleting state: '_742b094314383407864f56bccc6afd7de3dcb3211e'
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Session: doLogin("default-sp")
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Session: Valid session found with 'default-sp'.
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Session: Valid session found with 'default-sp'.
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Template: Reading [/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/dictionaries/status]
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Template: Reading [/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/dictionaries/attributes]
Feb 02 12:58:22 simplesamlphp DEBUG [7c4534ae0a] Template: Reading [/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/modules/core/dictionaries/frontpage]

Wenn ich gehe https://biz.stage.originsystems.co.za?ccof=RGN002, werde ich erwartungsgemäß zum SSO Circle umgeleitet, wo ich mich dann authentifiziere. Zu diesem Zeitpunkt hat mein Autth Token einen Wert von _39679e07cb1911e08b2bff3580a9929faddd07e9b6. Sobald ich authentifiziert bin, werde ich zu einer SimpleSAML-Fehlerseite „State Information Lost“ weitergeleitet und das Auth-Token ist immer noch vorhanden _39679e07cb1911e08b2bff3580a9929faddd07e9b6.

Das Protokoll lautet…

Feb 02 13:08:31 simplesamlphp DEBUG [8abc64dd04] Loading state: '_498e7d4d75bb7716e5e8cf905e0da5ef1c40cf1b3f'
Feb 02 13:08:31 simplesamlphp ERROR [8abc64dd04] SimpleSAML_Error_NoState: NOSTATE
Feb 02 13:08:31 simplesamlphp ERROR [8abc64dd04] Backtrace:
Feb 02 13:08:31 simplesamlphp ERROR [8abc64dd04] 2 /OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/lib/SimpleSAML/Auth/State.php:225 (SimpleSAML_Auth_State::loadState)
Feb 02 13:08:31 simplesamlphp ERROR [8abc64dd04] 1 /OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/modules/saml/www/sp/saml2-acs.php:63 (require)
Feb 02 13:08:31 simplesamlphp ERROR [8abc64dd04] 0 /OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/www/module.php:134 (N/A)
Feb 02 13:08:31 simplesamlphp ERROR [8abc64dd04] Error report with id dfbb52b0 generated.
Feb 02 13:08:31 simplesamlphp DEBUG [8abc64dd04] Template: Reading [/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/dictionaries/errors]
Feb 02 13:08:31 simplesamlphp DEBUG [8abc64dd04] Template: Reading [/OriginSystems/application/Updraft/web/external/System/SSO/simplesaml/modules/core/dictionaries/no_state]

Es sieht für mich so aus, als ob das Auth-Token sein sollte _498e7d4d75bb7716e5e8cf905e0da5ef1c40cf1b3f ist es aber aus irgendeinem Grund nicht. Da SimpleSAML dieses Token nicht finden kann, löscht es niemals das alte und erstellt ein neues. Vielleicht irre ich mich da. Ich bin durchaus bereit, korrigiert zu werden. Mein Problem ist, dass ich nicht weiß, woran das liegt. Ich habe den cookie.name in der Konfigurationsdatei auf „biz.stage.originsystems.co.za“ gesetzt und das scheint für das SimpleSAML-Kontrollfeld gut zu funktionieren, aber es funktioniert nicht, wenn der SP aus der eigentlichen Anwendung verwendet wird. Kann mich hier jemand in die richtige Richtung weisen? Ich bin verloren.

  • Die generierte ID/das generierte Token, die Sie erhalten, verursacht irgendwie ein Problem. Die drei wichtigsten Gründe, die diese Fehler generieren können, sind: 1. Ändern des Domänennamens, z -state error, 2. Sprung von HTTP zu HTTPS oder HTTPS zu HTTP, 3. die Sitzung wird nicht richtig gespeichert, Weitere Informationen finden Sie unter hier

    – Talha Habib

    6. Februar 2016 um 18:21 Uhr


  • Multi Thinker: Das ist eine ausgezeichnete Antwort. Sie sollten es als Antwort posten, damit Sie das Kopfgeld verdienen können. Wenn es bei dir nicht funktioniert, Andrew, würde es dir etwas ausmachen, die Metadaten für deine SP- und IDP-Konfiguration zu posten?

    – Ken Clubok

    10. Februar 2016 um 3:51 Uhr

  • Ohne einen Blick auf die Metadaten zu werfen, ist es schwierig, eine konkrete Antwort zu geben, aber ich möchte darauf hinweisen, dass Firefox ein Add-on namens Saml Tracer hat (addons.mozilla.org/en-US/firefox/addon/saml-tracer), die ich die ganze Zeit beim Debuggen von SSO-Problemen verwendet habe. Kann Ihnen helfen, herauszufinden, welche Werte hin und her gesendet werden, ohne sich auf Debug-Anweisungen zu verlassen.

    – tmountjr

    29. August 2017 um 14:52 Uhr

  • Hallo, ich habe das gleiche Problem. Hast du es geschafft, das zu lösen?

    – JianYA

    13. März 2018 um 2:33 Uhr

  • Führen Sie Code auf mehreren Arbeitscomputern aus? (zB mehrere PHP-Worker-Rechner hinter Reverse-Proxy-Balancer.) Wenn dies der Fall ist, stellen Sie sicher, dass alle Worker das gemeinsam genutzte Daten-Backend sehen, das SimpleSAML verwendet, um die Daten zwischen verschiedenen Anfragen zu halten.

    – Mikko Rantalainen

    12. August 2021 um 10:13 Uhr

Benutzeravatar von Martin Zeitler
Martin Zeitler

Sie müssen zwei völlig unabhängige Umgebungen definieren, um das Vermischen dieser beiden Umgebungen (die zwei völlig unterschiedliche Identitätsanbieter aufweisen) zu umgehen, wie Sie es beschreiben (was offensichtlich nicht funktioniert, es sei denn, Sie haben beide in die SSO-Konfiguration – was wahrscheinlich nicht das gewünschte Ergebnis ist); Überprüfen Sie einfach den Hostnamen des Servers und definieren Sie die Variablen entsprechend – dies kann entweder “on-the-fly” oder möglicherweise durch zwei verschiedene Konfigurationsdateien erfolgen (es ist tatsächlich ziemlich üblich, Konfigurationsdateien am Ende einer Bereitstellung zu übertragen). Für mich klingt das eher nach einem Bereitstellungsproblem (ohne die richtige Konfigurationsdatei für die Live-Site) als nach einem SSO-Problem.

1405370cookie-checkSimpleSAMLphp-Statusinformationen gehen verloren

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy