【问题标题】:How do I use ssocircle as an idp and redirect to a page?如何使用 ssocircle 作为 idp 并重定向到页面?
【发布时间】:2017-09-07 07:46:04
【问题描述】:

我正在尝试设置 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。

【问题讨论】:

    标签: redirect saml-2.0 simplesamlphp


    【解决方案1】:

    SAML 和 SSOCircle IDP 支持 RelayState 参数。它将作为 POST 参数与 SAMLResponse 消息一起发送。请确保参数的 URL 编码正确。

    更新:对于免费的 SSOCircle 帐户,IDP 会重定向到额外的验证码页面。在重定向期间,RelayState 的值在服务器上丢失。该问题现已修复。付费订阅帐户无法观察到该行为,因为这些用户未重定向到验证码页面。

    【讨论】:

    • 我已经用我的浏览器访问的 URL 更新了问题。我更改了 url 编码,没有发现任何区别。
    • 修复 url 编码和详细的流程描述有助于解决问题。看起来参数在验证码处理中丢失了。我的测试基于跳过“无机器人”拦截的付费订阅帐户。无论如何,请再试一次,它现在对我有用。
    • 啊哈!我现在要恢复 RelayState 了!我仍然没有被重定向,但这一定是在我这边,因为我现在实际上正在获取参数。我怀疑你是某种 ssocircle 开发者......
    • 是的,它正在工作!谢谢!您要添加另一个答案还是编辑这个答案,以便我给您打勾?
    • 嗨@Hos,我在没有付费订阅的情况下也遇到了同样的问题。这个问题又回来了吗?
    【解决方案2】:

    urlencode 救援;浏览器如何区分属于 RelayState URL 的参数或属于 SAML 请求本身的参数

    【讨论】:

    • 所以我把它改成了&lt;a href="https://idp.ssocircle.com/sso/idpssoinit?metaAlias=%2Fpublicidp&amp;spEntityID=https://myServer/simplesaml/module.php/saml/sp/metadata.php/sp2&amp;RelayState=https%3A%2F%2FmyServer%2FSAMLHandler.php%3Fidp%3D2"&gt;Log in with ssocircle&lt;/a&gt;,我看到了同样的结果,重定向到/
    • 好吧,spEntityID 不是 urlencoded,因此不清楚 RelayState 参数是属于 URL 还是属于 spEntityID 参数值;默认情况下,前者会是这种情况;只是确保 url-encoding 完全正确
    • 我相信它应该是分开的,这就是它在原始网址中的处理方式对吗?那么为什么它不起作用呢?
    猜你喜欢
    • 2018-08-18
    • 2015-10-28
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    • 2020-06-13
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    相关资源
    最近更新 更多