Ping是否支持SAML中的多个受众限制值?

时间:2017-03-29 01:05:17

标签: single-sign-on saml pingfederate

使用PING作为我的身份提供者,我可以选择设置多个受众值(在我为我的应用程序添加的服务提供者配置中),以便它们将在SAML断言的AudienceRestriction元素中返回吗? 正如我所看到的那样,PING将发行人的价值作​​为受众而不是别的。

示例条件元素

<ns2:Conditions NotBefore="2011-01-10T20:52:56Z" NotOnOrAfter="2011-01-10T20:54:56Z">
  <ns2:AudienceRestriction>
    <ns2:Audience>urn:saml2:partnerspid</ns2:Audience>
  </ns2:AudienceRestriction>
  <ns2:AudienceRestriction>
    <ns2:Audience>Audience-IDP</ns2:Audience>
  </ns2:AudienceRestriction>
</ns2:Conditions>

1 个答案:

答案 0 :(得分:3)

你必须运行PingFed 8.0+才能使用它,这是Ping开始允许自定义请求和响应XML的地方。您应该在documentation

中详细了解该主题

使用此:

#AssertionType.getConditions().addNewAudienceRestriction().addAudience("whatever:eh")

将为您提供类似以下内容的内容:

<saml:Conditions NotBefore="2017-03-24T20:23:55.341Z" NotOnOrAfter="2017-03-24T20:38:55.341Z">
  <saml:AudienceRestriction>
    <saml:Audience>pingfederate:default:entityId</saml:Audience>
  </saml:AudienceRestriction>
  <saml:AudienceRestriction>
    <saml:Audience>whatever:eh</saml:Audience>
  </saml:AudienceRestriction>
</saml:Conditions>

但是,SAML规范(SAML-CORE-2.0, 2.5.1.4)声明:

  

请注意,a中可能包含多个元素   单个断言,每个必须独立评估。效果   这个要求和前面的定义是在一个   在给定条件下,观众形成分离(“OR”)   多个条件形成一个连词(“AND”)。

所以,按照你所说的格式,你会得到一个“与”。你的伴侣极不可能同时满足这两者,所以我认为你可能正在寻找一个“OR”。如果是这种情况,您将需要使用以下内容:

#AssertionType.getConditions().getAudienceRestrictionArray(0).addAudience("whatever:eh")

哪个应该产生类似的东西:

<saml:Conditions NotBefore="2017-03-24T20:20:37.046Z" NotOnOrAfter="2017-03-24T20:35:37.046Z">
  <saml:AudienceRestriction>
    <saml:Audience>pingfederate:default:entityId</saml:Audience>
    <saml:Audience>whatever:eh</saml:Audience>
  </saml:AudienceRestriction>
</saml:Conditions>