我有一個服務提供商設置在https://biz.dev.originsystems.co.za。我有一個IdP設置在http://stage.originsystems.co.za。SimpleSAMLphp狀態信息迷失
當使用工具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時不起作用。有人可以在這裏指出我正確的方向嗎?我迷路了。
生成的ID /令牌你正在以某種方式產生的問題,可以生成此錯誤的前三位原因是,1.更改域名,例如,你是在example.com www.example.com上跳躍導致的會話爲無狀態錯誤,2.從HTTP跳轉到HTTPS或HTTPS到HTTP,3.會話沒有正確保存,更多請參考[here](https://simplesamlphp.org/docs/development/simplesamlphp-nostate#section_3) –
多思考者:這是一個很好的迴應。你應該把它作爲答案發布,這樣你就可以獲得賞金。如果它不適合你,Andrew,你介意發佈你的SP和IDP配置的元數據嗎? –
不看的元數據,很難給出一個明確的答案,但我想指出的是,Firefox有一個附加的稱爲SAML示蹤劑(https://addons.mozilla.org/en-US/firefox/addon/ saml-tracer /),我在調試SSO問題時一直使用它。可以幫助您追蹤哪些值在不依賴調試語句的情況下來回發送。 – mounty