Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Single sign on SAML/签名注销请求是否需要RelayState?_Single Sign On_Saml - Fatal编程技术网

Single sign on SAML/签名注销请求是否需要RelayState?

Single sign on SAML/签名注销请求是否需要RelayState?,single-sign-on,saml,Single Sign On,Saml,我希望确认,有效的已签名SAML注销请求需要RelayState 我们已经将Microsoft的ADFS 2012 R2与Oracle的Identity Federation联合起来,其中ADFS是SP,OIF是IdP。作为基础,我们遵循了这一原则 一切正常,除了注销。我们有另一个SP正在注销并与OIF合作。我们发现的一个区别是,ADFS没有发送带有签名的注销请求的RelayState参数,而另一个SP则是。我一直在使用,其中我输入了以下内容: SAML注销请求 源的EntityId 目标UR

我希望确认,有效的已签名SAML注销请求需要RelayState

我们已经将Microsoft的ADFS 2012 R2与Oracle的Identity Federation联合起来,其中ADFS是SP,OIF是IdP。作为基础,我们遵循了这一原则

一切正常,除了注销。我们有另一个SP正在注销并与OIF合作。我们发现的一个区别是,ADFS没有发送带有签名的注销请求的RelayState参数,而另一个SP则是。我一直在使用,其中我输入了以下内容:

  • SAML注销请求
  • 源的EntityId
  • 目标URL,注销请求的目标
  • 西格尔
  • SAML注销请求的签名
  • X.509来源证书(检查签名)
  • 忽略时间问题:选中
这就给了我一个错误:

In order to check Signature you must provide the RelayState parameter and the X.509 cert
如果我在中输入RelayState和其他值,它会报告我的签名注销请求有效

对于ADFS,因为它没有RelayState参数,所以我不能说从ADFS注销是有效的

综上所述,我在SAML规范中找不到任何地方说,签名注销请求需要RelayState。有人能确认它是必需的并用文档进行备份吗?

正在阅读SAML LogoutRequestType的SAMLv2核心规范“单注销协议”XML模式


没有提到RelayState元素。SAMLv2配置文件规范中的“单一注销配置文件”也没有提到RelayState


我想说,这表明RelayState(这是一个请求参数,因此只能在前端通道绑定中使用)不是强制性的。

LogoutRequest消息不会引用
RelayState
参数(正如另一篇文章所建议的)但它是所谓绑定的一部分,用于在SAML各方之间传递消息。假设注销使用
HTTP重定向
HTTP-POST
工件
绑定,规范允许发送方包含
RelayState
参数,接收方随后必须返回相同的
RelayState
参数作为响应的一部分(作为发送方保持状态的一种方式)

有关HTTP重定向绑定,请参见SAML绑定文档的第3.4.3节RelayState:

3.4.3重新调整状态

RelayState数据可以包括在通过发送的SAML协议消息中 此绑定。该值不得超过80 长度为个字节,并且应受到实体的完整性保护 创建独立于任何其他可能或可能的保护的消息 消息传输期间可能不存在。签名不现实 给定空间限制,但由于该值暴露于 第三方篡改时,实体应确保该值未被篡改 通过使用校验和、伪随机值或 类似的方法。如果SAML请求消息伴有RelayState 数据,则SAML响应程序必须返回其SAML协议响应 使用也支持RelayState机制的绑定,并且必须 将它随请求接收的确切数据放入 响应中相应的RelayState参数。如果没有此类值 包含在SAML请求消息中,或者如果SAML响应 消息在没有相应请求的情况下生成,然后 SAML响应器可包括将由响应器解释的重分析状态数据 收件人基于个人资料的使用或双方之间的事先协议 聚会


对于其他绑定,有一个类似的部分存在。正如@nzpcmad所说:请求中不必包含它。

谢谢,但我仍然感到困惑。根据您所说的,既然规范没有列出它,为什么RelayState是强制性的?或者您的最后一句话是打字错误?RelayState是在SAML绑定规范中定义的,而不是在e核心SAML规范。毫不奇怪,您什么也没发现(参见@Hans Z.回复)即使在那里,参数也是可选的。换句话说,它不是强制性的。工具要求它是不正确的。例如,ADFS不为SP Initiated提供它。谢谢。我会接受这个答案,并向Oracle开一张罚单,看看他们说了些什么。如果有什么有趣的结果,我会尝试返回这里并更新状态。我们最终会这样做解决了我们的问题,ADFS和OAM之间的注销正在运行。主要问题是OAM中的ADFS元数据过时。