使用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>
答案 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>