2017-04-11 128 views
0

我正在嘗試設置SAML,並且我已經爲我的服務提供者和我的身份提供者使用了SimpleSAMLphp。所以現在要測試我的服務提供商,我設置了ssocircle作爲替代身份提供者。我遇到的問題是,無論我做什麼,它都會重定向到/而不是RelayState(SimpleSAMLphp最終用於重定向)。有沒有解決這個問題的標準的任何部分?它應該總是重定向到/或是ssocircle忽略我的參數,當它不應該?如何將ssocircle作爲idp並重定向到頁面?

<a href="https://idp.ssocircle.com/sso/idpssoinit?metaAlias=%2Fpublicidp&spEntityID=https://myServer/simplesaml/module.php/saml/sp/metadata.php/sp2&RelayState=https://myServer/SAMLHandler.php?idp=2&destination=https://myServer/SAMLHandler.php?idp=2">Log in with ssocircle</a> 

根據我的答案,我將其改爲如下,但我仍然看到相同的結果。

<a href="https://idp.ssocircle.com/sso/idpssoinit?metaAlias=%2Fpublicidp&RelayState=https%3A%2F%2FmyServer%2FSAMLHandler.php%3Fidp%3D2&spEntityID=https%3A%2F%2FmyServer%2Fsimplesaml%2Fmodule.php%2Fsaml%2Fsp%2Fmetadata.php%2Fsp2">Log in with ssocircle</a> 

這裏是鏈接的順序我的瀏覽器看到:

https://idp.ssocircle.com/sso/hos/AdPage.jsp?returnUrl=/sso/idpssoinit&metaAlias=%2Fpublicidp&RelayState=https%3A%2F%2FmyServer%2FSAMLHandler.php%3Fidp%3D2&spEntityID=https%3A%2F%2FmyServer%2Fsimplesaml%2Fmodule.php%2Fsaml%2Fsp%2Fmetadata.php%2Fsp2 

然後我點擊一個框,說我不是機器人。他們不相信我,所以我必須選擇一些圖像。然後它讓我繼續。

https://idp.ssocircle.com/sso/idpssoinit?metaAlias=%2Fpublicidp&spEntityID=https%3A%2F%2FmyServer%2Fsimplesaml%2Fmodule.php%2Fsaml%2Fsp%2Fmetadata.php%2Fsp2&relayState=https%3A%2F%2FmyServer%2FSAMLHandler.php%3Fidp%3D2&g-recaptcha-response=03AOP2lf7g9SbzDz_d3YQ7s-RpbtUTdlIntJ8PCr-jHHK97Wmua4xHYOzk0jwRbbzbPUJnigOjEoCDib4LTcacS_0rd0rSvEve2JBZoDh5BxKHOFXae2Eht_ZYK2mOG6tS3VEwXxbM4u7Bgc3l3OY3tan2cRenS1aUcHQHggvlr32Jd5POg5a1wHm5cPx-AhdnRZZC3X-8pU1VSgjq4w1IqNBmCRCPICPOGWdnLrdab0-VOIV0NYkMFS66kUUFb69sTAASudJNZUds-6IFtmT2uqxBcMqAw25MrVUUj1q7LUl5E7t79lqW9zRhXc94TvsBJcrI1pEEWghK 

最後

https://myServer/ 

雖然如果我把我的AssertionConsumerService模具()調用,它確實死了。然後,如果我打印$ _REQUEST,則不會有RelayState。

回答

1

SAML和SSOCircle IDP支持RelayState參數。它將作爲POST參數與SAMLResponse消息一起發送。請確保參數的URL編碼正確。

更新:對於免費的SSOCircle帳戶,IDP重定向到其他驗證碼頁面。在重定向過程中,RelayState的值在服務器上丟失。問題現在已修復。付費訂閱帳戶無法觀察到該行爲,因爲這些用戶未被重定向到驗證碼頁面。

+1

我已經使用瀏覽器轉到的URL更新了問題。我改變了網址編碼,並沒有看到任何區別。 – Andrew

+0

修復url編碼和詳細的流程描述有助於解決問題。它看起來像參數在驗證碼處理中丟失。我的測試是基於一個跳過「無機器人」攔截的付費訂閱帳戶。無論如何,請再試一次,它現在對我有效。 – Hos

+0

因此,沒有付費訂閱它將無法正常工作? – Andrew

0

urlencode to rescue;瀏覽器如何區分作爲RelayState URL的一部分的參數或作爲SAML請求本身一部分的參數

+0

因此,我將其更改爲'Log in with ssocircle',我看到了相同的結果,重定向到/ – Andrew

+0

,spEntityID未被urlencoded,因此RelayState參數屬於URL或spEntityID參數值;默認情況下,前者將是這種情況;只是確保網址編碼是完全正確的 –

+0

我相信它應該是分開的,這是如何在原始網址中處理的權利?那爲什麼它不工作? – Andrew