我已将 Shibboleth 3 配置为提供包含以下属性语句的 SAML 响应
<saml2:AttributeStatement>
<saml2:Attribute FriendlyName="uid"
Name="urn:oid:0.9.2342.19200300.100.1.1" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<saml2:AttributeValue>[email protected]</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute FriendlyName="memberOf"
Name="urn:oid:2.5.4.42" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic">
<saml2:AttributeValue>cccc\cccc-cccc-cccc</saml2:AttributeValue>
</saml2:Attribute>
</saml2:AttributeStatement>
我希望可以配置 attribute-resolver.xml,以便以下 xml 属性语句位于 SAML 响应中。
<saml2:AttributeStatement>
<saml2:Attribute FriendlyName="uid">
<saml2:AttributeValue>[email protected]</saml2:AttributeValue>
</saml2:Attribute>
<saml2:Attribute FriendlyName="memberOf">
<saml2:AttributeValue>cccc\cccc-cccc-cccc</saml2:AttributeValue>
</saml2:Attribute>
</saml2:AttributeStatement>
我的 attribute-resolver.xml 的内容
<resolver:AttributeDefinition id="memberOf" xsi:type="ad:Simple" sourceAttributeID="memberOf">
<resolver:Dependency ref="StaticGroups" />
<resolver:AttributeEncoder xsi:type="enc:SAML1String" name="urn:mace:dir:attribute-def:memberOf" encodeType="false" />
<resolver:AttributeEncoder xsi:type="enc:SAML2String" name="urn:oid:2.5.4.42" friendlyName="memberOf" encodeType="false" nameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:basic" />
</resolver:AttributeDefinition>
<!-- ========================================== -->
<!-- Data Connectors -->
<!-- ========================================== -->
<resolver:DataConnector id="StaticGroups" xsi:type="dc:Static" xmlns="urn:mace:shibboleth:2.0:resolver:dc">
<Attribute id="memberOf">
<Value>cccc\cccc-cccc-cccc</Value>
</Attribute>
</resolver:DataConnector>
答案1
SAML 2.0 断言模式表明“名称”属性是必需的。因此您无法执行您想做的事情。
<element name="Attribute" type="saml:AttributeType"/>
<complexType name="AttributeType">
<sequence>
<element ref="saml:AttributeValue" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="Name" type="string" use="required"/>
<attribute name="NameFormat" type="anyURI" use="optional"/>
<attribute name="FriendlyName" type="string" use="optional"/>
<anyAttribute namespace="##other" processContents="lax"/>
</complexType>
首先,你为什么想要这个?
https://docs.oasis-open.org/security/saml/v2.0/saml-core-2.0-os.pdf
答案2
我认为这是不可能的。我曾经将该Name
属性作为attribute
标签的键。
但:
- 您是否已检查过 xml 模式,其中 Name 是否(我认为)是必需属性?
- 无论如何,
attribute-resolver
都是关于获取属性。我认为这不是搜索您要查找的功能的正确地方; - 你能降级到 SAML1 吗?只是模糊地记得属性的命名规则比较弱:也许你可以实现接近你的目标的东西。