2016-01-28 14 views
10

Ho un provider di servizi impostato su https://biz.dev.originsystems.co.za. Ho installato un IDP allo http://stage.originsystems.co.za.SimpleSAMLphp State Information smarrimento

Quando si verifica l'autenticazione con lo strumento su https://biz.dev.originsystems.co.za/simplesaml/module.php/core/authenticate.php, tutto funziona correttamente. Ritorna al sito Dev con gli attributi richiesti e tutto è felice e gioioso.

Tuttavia, quando provo a colpire effettivamente l'IdP nel codice su https://biz.dev.originsystems.co.za, vengono reindirizzati alla pagina di accesso dello stage ma dopo aver effettuato l'accesso viene visualizzato un errore "Informazioni sullo stato perso". Ottengo le seguenti informazioni di debug:

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) 

Ho eseguito tutte le operazioni di risoluzione dei problemi che la pagina mi chiedeva di fare ma la situazione persiste.

Ho aperto gli strumenti di sviluppo sul browser e ho guardato le informazioni sui cookie. I cookie per biz.dev.originsystems.co.za includono un SimpleAMLAuthToken, quindi immagino che i cookie funzionino. Il codice che sto usando per colpire l'IdP è:

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

UPDATE:

Ecco qualche informazione in più ...

ho voluto determinare se il problema era con il modo Ho creato la IdP, quindi ho iniziato a utilizzare SSO Circle per l'IdP. Le informazioni di stato vengono perse dopo l'autenticazione anche su SSO Circle. Penso che questo significhi che il problema è da qualche parte con la mia installazione di Service Provider per SimpleSAML. Ecco cosa sta succedendo ...

Quando vado alla pagina di test SimpleSAML fonti di autenticazione a https://biz.stage.originsystems.co.za/simplesaml ho i seguenti valori dei cookie ...

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

Tutto tranne il SimpleSAMLAuthToken è dalla nostra applicazione e non dovrebbe influenzare SimpleSAML. Una volta reindirizzato a SSO Circle e autenticato, ritorno alla mia pagina SimpleSAML e il token di autenticazione ora ha un valore di _39679e07cb1911e08b2bff3580a9929faddd07e9b6 e tutte le informazioni pertinenti vengono restituite correttamente. Il file di registro mostra la seguente attività.

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] 

Se vado a https://biz.stage.originsystems.co.za?ccof=RGN002, sto reindirizzato come mi aspetto di essere a SSO Circle dove ho quindi autenticarsi. Al momento il mio token Autth ha un valore di _39679e07cb1911e08b2bff3580a9929faddd07e9b6. Una volta che sono stato autenticato, sono indirizzato a una pagina di errore SimpleSAML "State Information Lost" e il token di autenticazione è ancora _39679e07cb1911e08b2bff3580a9929faddd07e9b6.

Il registro si legge ...

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] 

Sembra a me come se l'Auth Token dovrebbe essere _498e7d4d75bb7716e5e8cf905e0da5ef1c40cf1b3f, ma non è per qualche ragione. Poiché SimpleSAML non riesce a trovare quel token, non elimina mai quello vecchio e ne crea uno nuovo. Forse mi sbaglio. Sono perfettamente disposto a essere corretto. Il mio problema è che non so cosa stia causando questo. Ho impostato il cookie.name nel file di configurazione su "biz.stage.originsystems.co.za" e sembra funzionare correttamente per il pannello di controllo SimpleSAML, ma non funziona quando si utilizza SP dall'applicazione reale. Qualcuno può indicarmi la giusta direzione qui? Mi sono perso.

+2

L'ID/Token generato che si ottiene crea in qualche modo un problema, i primi tre motivi per cui è possibile generare questi errori sono: 1. Modifica del nome di dominio, ad esempio, si sta su example.com saltando su www.example.com che causa il sessione per errore senza stato, 2. Passaggio da HTTP a HTTPS o HTTPS a HTTP, 3. la sessione non viene salvata correttamente, per ulteriori informazioni si prega di dare un'occhiata a [qui] (https://simplesamlphp.org/docs/development/simplesamlphp-nostate # section_3) –

+0

Multi Thinker: questa è una risposta eccellente. Dovresti postarlo come risposta, così puoi guadagnare la taglia. Se non funziona per te, Andrew, ti dispiacerebbe postare i metadati per la tua configurazione SP e IDP? –

+0

Senza guardare i metadati è difficile dare una risposta specifica, ma vorrei sottolineare che Firefox ha un componente aggiuntivo chiamato Saml Tracer (https://addons.mozilla.org/en-US/firefox/addon/ saml-tracer /) che ho usato tutto il tempo durante il debug dei problemi SSO. Potrebbe aiutarti a rintracciare quali valori vengono inviati avanti e indietro senza fare affidamento sulle istruzioni di debug. – mounty

risposta

0

dovrai definire due ambienti completamente indipendenti, al fine di aggirare questi due ambienti (che presentano due provider di identità completamente diversi), come lo descrivi (che ovviamente non funziona, a meno di aver aggiunto entrambi di loro nella configurazione SSO - che probabilmente potrebbe non essere il risultato desiderato); controllo semplice per il nome host del server e definizione delle variabili di conseguenza - questo può essere fatto "al volo" o eventualmente da due diversi file di configurazione (in realtà è abbastanza comune spingere i file di configurazione alla fine di una distribuzione). per me questo suona molto più simile a un problema di distribuzione (privo del file di configurazione appropriato per il sito attivo), rispetto a un problema SSO.