web-dev-qa-db-ja.com

nameとnameFormatが一致していても、マップされていないSAML2.0属性をスキップする

Shibboleth2.5.6を実行しているSP。 1つの特定のIdPについて、次の属性マッピングがあります。

<Attribute name="role"
    nameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"
    id="role" />
<Attribute name="urn:mace:dir:attribute-def:givenName"
    nameFormat="urn:mace:shibboleth:1.0:attributeNamespace:uri"
    id="givenName" />

次の内容を含むワイヤーメッセージを受け取ります。

<AttributeStatement>
    <Attribute Name="role" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified">
        <AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">Educator</AttributeValue>
    </Attribute>
    <Attribute Name="urn:mace:dir:attribute-def:givenName" NameFormat="urn:mace:shibboleth:1.0:attributeNamespace:uri">
        <AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">intraguest</AttributeValue>
    </Attribute>
</AttributeStatement>

どのログ:

Shibboleth.AttributeExtractor.XML : creating mapping for Attribute role, Format/Namespace:urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified
Shibboleth.AttributeExtractor.XML : creating mapping for Attribute urn:mace:dir:attribute-def:givenName
...
DEBUG Shibboleth.AttributeDecoder.String [1]: decoding SimpleAttribute (role) from SAML 2 Attribute (role) with 1 value(s)
INFO Shibboleth.AttributeExtractor.XML [1]: skipping unmapped SAML 2.0 Attribute with Name: urn:mace:dir:attribute-def:givenName, Format:urn:mace:shibboleth:1.0:attributeNamespace:uri

givenNamenameが一致するのに、なぜnameFormatがスキップされるのですか?

Format/NamespaceコメントがgivenNameの「マッピングの作成」ログ行にありませんが、これは、指定されたnameFormatがデフォルトと一致するためだと思います。


更新:

IdPはPingFederateソースであり、そのメタデータはSAML2を要求します。メタデータからの関連する抜粋を次に示します。

<md:EntityDescriptor xmlns:md="urn:oasis:names:tc:SAML:2.0:metadata" ID="..." entityID="...">
    <md:IDPSSODescriptor protocolSupportEnumeration="urn:oasis:names:tc:SAML:2.0:protocol">
        <saml:Attribute xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Name="urn:mace:dir:attribute-def:givenName" NameFormat="urn:mace:shibboleth:1.0:attributeNamespace:uri"/>
        <saml:Attribute xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" Name="role" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified"/>
    </md:IDPSSODescriptor>
</md:EntityDescriptor>
1
bishop

同じ問題が発生していました。どうやらShibbolethはSAML1とSAML2のフォーマットを混在させることはできません。次のように使用する必要があります( https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPAddAttribute ):

  • SAML 1:
    • urn:mace:sh​​ibboleth:1.0:attributeNamespace:uri(デフォルト)
    • 属性を別の形式(SAML 2形式ではない)でマップする場合は、nameFormat属性を使用して属性マッピングで指定する必要があります。
  • SAML 2:
    • urn:oasis:names:tc:SAML:2.0:attrname-format:uri(デフォルト)
    • urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified(default)
    • 属性を別の形式(SAML 1形式ではない)でマップする場合は、nameFormat属性を使用して属性マッピングで指定する必要があります。

したがって、問題は、nameFormat属性を使用してSAML1形式を使用するように明示的にShibbolethに指示した場合でも、SAML1形式を使用する属性を持つSAML2メッセージを受信し、Shibbolethではサポートされないことです。

PingFederate IdPチームに、SAML 2の「urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified」形式を使用して属性を送信するように依頼することで問題を解決しました(これは明らかに簡単な形式であるため) PingFederateでのサポート)。このフォーマットはShibbolethのデフォルトであるため、属性マッピングではnameFormat属性を使用しません。

これが問題の解決に役立つことを願っています。

3
Tom Desair