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
givenName
とname
が一致するのに、なぜ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>
同じ問題が発生していました。どうやらShibbolethはSAML1とSAML2のフォーマットを混在させることはできません。次のように使用する必要があります( https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPAddAttribute ):
したがって、問題は、nameFormat属性を使用してSAML1形式を使用するように明示的にShibbolethに指示した場合でも、SAML1形式を使用する属性を持つSAML2メッセージを受信し、Shibbolethではサポートされないことです。
PingFederate IdPチームに、SAML 2の「urn:oasis:names:tc:SAML:2.0:attrname-format:unspecified」形式を使用して属性を送信するように依頼することで問題を解決しました(これは明らかに簡単な形式であるため) PingFederateでのサポート)。このフォーマットはShibbolethのデフォルトであるため、属性マッピングではnameFormat属性を使用しません。
これが問題の解決に役立つことを願っています。