我正在尝试设置SAML,并且我已经将SimpleSAMLphp用于我的服务提供商和我的身份提供商。所以现在为了测试我的服务提供者,我设置了ssocircle作为替代身份提供者。我遇到的问题是无论我做什么,它都会重定向到/而不是RelayState(SimpleSAMLphp最后用于重定向)。该标准中是否有任何部分可以解决这个问题?如果它不应该重定向到/或是ssocircle忽略我的参数吗?
<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中调用die(),它确实会死掉。然后,如果我打印$ _REQUEST,则没有RelayState。
答案 0 :(得分:1)
SAML和SSOCircle IDP支持RelayState参数。它将作为POST参数与SAMLResponse消息一起发送。请确保参数已正确URL编码。
更新:对于免费的SSOCircle帐户,IDP会重定向到其他验证码页面。在重定向期间,RelayState的值在服务器上丢失。现在问题已解决。付费订阅帐户无法观察到这种行为,因为这些用户未被重定向到验证码页面。
答案 1 :(得分:0)