【发布时间】:2017-02-14 15:22:34
【问题描述】:
我的任务是实现 SAML2.0 SSO 概念证明,并且我已经成功集成了 spring saml 扩展,这非常简单,感谢作者。虽然,我仍然无法让RelayState 参数工作,但我总是在接收SP 时将其值设为null。
我正在使用SSOCircle's public IdP 和IdP 发起的流(虽然我们没有阻止SP 发起的模式),并在URL 中附加RelayState。
我正在尝试使用SAMLRelayStateSuccessHandler,我可以从SAMLCredential 实例中获取RelayState 参数,但它始终是null。我将其追溯到HTTPPostDecoder.doDecode(MessageContext messageContext) 方法(HTTP 后绑定),它在那里也为空。我还跟踪了浏览器网络 url 并注意到 SP 消费者端点 post url 即 /saml/SSO 包含 SAMLResponse 但没有 RelayState 参数(我的理解是它将是一个单独的参数)。
我觉得IdP 可能没有将RelayState 发送到我的SP,但也没有在IdP 端看到任何配置来启用/禁用它,所以不确定。
如果有人可以分享他们的类似经验,我将不胜感激有关调试的建议。
【问题讨论】:
-
请提供网络跟踪以及 http 请求的流向。这是验证 RelayState 是否由 IDP 传递的最佳方式。
-
@hos 很抱歉这么晚才回复,非常感谢您的回复。超过 15 天没有任何回复,我放弃了,也没有监控更新。我后来可能没有监控的另一个原因是,在我开发之后,我已经使用不同的 IDP 转移到 Pre-prod(我针对公共 IDP ssocircle 开发)。它在新的 IDP 上运行顺利,所以我认为问题出在 ssocircle 而不是我的代码上。事实上,就在最近我意识到 ssocircle IDP 也开始工作了,不确定他们是否进行了一些修复。顺便说一下,网络跟踪在发布到我的 SP 时没有携带 RelayState。
标签: saml-2.0 spring-saml