Shibboleth 3 - 属性的 SAML 响应

Shibboleth 3 - 属性的 SAML 响应

我已将 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标签的键。

但:

  1. 您是否已检查过 xml 模式,其中 Name 是否(我认为)是必需属性?
  2. 无论如何,attribute-resolver都是关于获取属性。我认为这不是搜索您要查找的功能的正确地方;
  3. 你能降级到 SAML1 吗?只是模糊地记得属性的命名规则比较弱:也许你可以实现接近你的目标的东西。

相关内容