在OpenID中,是否有像SAMLSSO RelayState这样的概念?

时间:2014-01-07 12:27:07

标签: openid

我想发送一个带有OpenID请求的状态,并使用OpenID Provider(OP)响应将其恢复原状。 SAMLSSO为此目的使用'RelayState'参数。在OpenID中有这样的方法吗?

我检查了specification,似乎我将一个像RelayState这样的参数附加到'openid.return_to'并发送请求,OP应该将它发送回响应的'openid.return_to'参数。

但规范也提到:

  

return_to URL可以用作依赖方将身份验证请求的上下文附加到身份验证响应的机制。 本文档未定义RP可以确保外部方不修改查询参数的机制;这种机制可以由RP本身定义。

在SAMLSSO中,保证IdP将发送RelayState中发送的相同值。但是使用OpenID规范中的上述声明,我不确定使用'openid.return_to'是实现此目的的正确方法。还有其他(更好)的方式吗?或者我以任何方式误解了这个陈述?

1 个答案:

答案 0 :(得分:1)

据我所知,openid.return_to是将RelayState传递给OpenID请求的唯一方法。正如您巧妙引用的规范所述:

  • “return_to URL可以用作依赖方将身份验证请求的上下文附加到身份验证响应的机制。”也就是说,此URL可以通过GET将中继状态考虑在内参数就像SAMLSSO使用的那样,例如?RelayState=%2Fpost-login-page
  • “本文档没有定义RP可以确保查询参数不被外部方修改的机制;这种机制可以由RP本身定义。”也就是说,这个端点也应该验证请求本身,就像SAML通过SHA指纹一样。
  • 因此,最后您可以拥有一个return_to网址,用于评估OpenID验证的结果,包括或不包含RelayState,例如/base?RelayState=/base

你刚才问过这个问题所以如果你找到了更好的选择,请告诉我们。但是现在我只是在你原来的帖子中确认这个假设openid.return_to是考虑像RelayState这样的东西的唯一方法。如果我错了,请有人纠正我!

相关问题