Назад | Перейти на главную страницу

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>vinay.joseph@cccc.cccc</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 так, чтобы в ответе SAML находился следующий оператор xml Attribute.

                <saml2:AttributeStatement>
                    <saml2:Attribute FriendlyName="uid">
                        <saml2:AttributeValue>vinay.joseph@cccc.cccc</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>

Схема утверждения 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

Я бы сказал, что это невозможно. Раньше я считал правду Name атрибут быть ключом к attribute тег.

Но:

  1. Вы проверили схему xml, если (как я думаю) имя является обязательным атрибутом?
  2. в любом случае, attribute-resolver о получении атрибутов. Я не думаю, что это подходящее место для поиска функции, которую вы ищете;
  3. вы можете перейти на SAML1? Просто смутно вспомнил, что правила именования атрибутов были слабее: возможно, вы сможете достичь чего-то близкого к своей цели.