2016-01-28 97 views
10

我有一個服務提供商設置在https://biz.dev.originsystems.co.za。我有一個IdP設置在http://stage.originsystems.co.zaSimpleSAMLphp狀態信息迷失

當使用工具https://biz.dev.originsystems.co.za/simplesaml/module.php/core/authenticate.php測試身份驗證時,一切正常。它帶着所需的屬性回到開發站點,所有的都是開心和快樂的。

但是,當我嘗試實際打到https://biz.dev.originsystems.co.za上代碼中的IdP時,我被重定向到頁面中的舞臺日誌,但登錄後我收到「狀態信息丟失」錯誤。我得到以下調試信息:

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) 

我已經完成了所有頁面要求我做的故障排除,但情況仍然存在。

我已經打開瀏覽器上的開發工具,並觀看cookie信息。 biz.dev.originsystems.co.za的cookies包含一個SimpleAMLAuthToken,所以我認爲cookies正在工作。我用打的IdP的代碼是:

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

UPDATE:

這裏的一些詳細信息...

我想,以確定問題是與我如何設置IdP,所以我開始使用SSO Circle作爲IdP。在SSO Circle上進行身份驗證後,國家信息也會丟失。我認爲這意味着這個問題與SimpleSAML的服務提供商設置有關。這裏是發生了什麼......

當我去SimpleSAML測試認證源頁面在https://biz.stage.originsystems.co.za/simplesaml我有以下的cookie值......除了SimpleSAMLAuthToken

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

一切都是從我們的應用程序,不應該影響SimpleSAML。一旦我重定向到SSO Circle並進行身份驗證,我將返回到我的SimpleSAML頁面,並且身份驗證令牌現在的值爲_39679e07cb1911e08b2bff3580a9929faddd07e9b6,並且所有相關信息都會正確返回。日誌文件顯示以下活動。

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] 

如果我去https://biz.stage.originsystems.co.za?ccof=RGN002,因爲我希望是SSO圈,我再驗證我重定向。此時我的Autth令牌的值爲_39679e07cb1911e08b2bff3580a9929faddd07e9b6。一旦我通過身份驗證,我就被導向到一個SimpleSAML錯誤頁面「State Information Lost」,並且Auth Token仍然是_39679e07cb1911e08b2bff3580a9929faddd07e9b6

日誌讀取...

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] 

在我看來好像身份驗證令牌應該是_498e7d4d75bb7716e5e8cf905e0da5ef1c40cf1b3f,但不是出於某種原因。由於SimpleSAML無法找到該令牌,因此它永遠不會刪除舊令牌並創建一個新令牌。也許我錯了。我非常樂意被糾正。我的問題是,我不知道是什麼造成這種情況。我已經將配置文件中的cookie.name設置爲「biz.stage.originsystems.co.za」,並且對於SimpleSAML控制面板似乎工作正常,但在從實際應用程序使用SP時不起作用。有人可以在這裏指出我正確的方向嗎?我迷路了。

+2

生成的ID /令牌你正在以某種方式產生的問題,可以生成此錯誤的前三位原因是,1.更改域名,例如,你是在example.com www.example.com上跳躍導致的會話爲無狀態錯誤,2.從HTTP跳轉到HTTPS或HTTPS到HTTP,3.會話沒有正確保存,更多請參考[here](https://simplesamlphp.org/docs/development/simplesamlphp-nostate#section_3) –

+0

多思考者:這是一個很好的迴應。你應該把它作爲答案發布,這樣你就可以獲得賞金。如果它不適合你,Andrew,你介意發佈你的SP和IDP配置的元數據嗎? –

+0

不看的元數據,很難給出一個明確的答案,但我想指出的是,Firefox有一個附加的稱爲SAML示蹤劑(https://addons.mozilla.org/en-US/firefox/addon/ saml-tracer /),我在調試SSO問題時一直使用它。可以幫助您追蹤哪些值在不依賴調試語句的情況下來回發送。 – mounty

回答

0

你必須定義兩個完全獨立的環境中,爲了解決這兩個環境(其具有兩個完全不同的身份提供)混合起來,因爲你描述它(這顯然是行不通的,除非同時具有增加他們進入SSO配置 - 這可能不是預期的結果);簡單地檢查服務器的主機名並相應地定義變量 - 這可以通過「即時」或可能由兩個不同的配置文件完成(實際上在部署結束時推送配置文件非常常見)。對我來說,這聽起來更像一個部署問題(缺少適合活動網站的配置文件),而不是SSO問題。