attribute-filter.xml では属性値を変更できない
概要
Shibboleth IdPで特定のSPに対してだけ、送出する属性値に細工をしようとしたら出来なかった。attribute-filter.xml では属性値の送出をフィルタするだけで、追加や変更はできない。
https://wiki.shibboleth.net/confluence/display/IDP30/AttributeFilterConfiguration にその旨が記載されている。
解説
Shibboleth SPの中には、特定の属性値を送出してきたユーザに対し、IdPの管理者として扱う様なサービスがある。この方法を取ると、SPでサービスを提供する側は、IdPの管理者に誰が管理者であるかを個別に確認する必要が無い。
例えば、倫倫姫では、eduPersonEntitlement=urn:mace:nii.ac.jp:moodle:course-admin のユーザをコース管理者権限として扱うようになっていた。
解説では attribute-resolver.xml で条件式を書き、特定のuidを持つユーザに対して属性値を変更する様に記載があるが、その方法だとどのSPに対しても同じ属性値を送出してしまうため、attribute-filter.xml で処理したらSP毎に設定することが可能になると考えた(が、ダメだった)。
attribute-filter.xml の設定 (Shibboleth IdP 3.6)
今後役に立つかも知れないので、メモとして attirbiute-filter.xml の設定を残す。
Shibbboleth IdPのバージョンにより、XMLの書式が変わることに注意。また、Javascriptの扱いが利用しているJREにより変わることにも注意。今回はJava 8で記述。
attribute-resolver.xml において、eduPersonEntitlement=urn:mace:dir:entitlement:common-lib-terms;mace:nii.ac.jp:moodle:course-admin となっていない場合には、期待した様な動作は得られない。
この場合は、eduPersonEntitlement は urn:mace:dir:entitlement:common-lib-terms のみ返ってくる。
<AttributeFilterPolicy id="PolicyforYourSP">
<PolicyRequirementRule xsi:type="Requester" value="https://sp-host.domain/shibboleth-sp" />
<AttributeRule attributeID="eduPersonPrincipalName" permitAny="true" />
<AttributeRule attributeID="eduPersonTargetedID" permitAny="true" />
<!-- 全てのユーザで eduPersonEntitlement を送出する場合
<AttributeRule attributeID="eduPersonEntitlement" permitAny="true" />
-->
<!-- 条件に合致する場合のみ eduPersonEntitlement を送出 -->
<AttributeRule attributeID="eduPersonEntitlement">
<!-- 全てのユーザで送出
<PermitValueRule xsi:type="ANY" />
-->
<!-- 特定のuidの場合にのみ送出
<PermitValueRule xsi:type="Value" attributeID="uid" value="test001" />
-->
<!-- 特定の複数のuidの場合にのみ送出
<PermitValueRule xsi:type="OR">
<Rule xsi:type="Value" attributeID="uid" value="test001" />
<Rule xsi:type="ValueRegex" attributeID="uid" regex="^.*001$" />
</PermitValueRule>
-->
<!-- Javascriptで条件を定義 -->
<PermitValueRule xsi:type="Script">
<Script>
<![CDATA[
hashSetType = Java.type("java.util.LinkedHashSet");
StringAttributeValue = Java.type("net.shibboleth.idp.attribute.StringAttributeValue");
result = new hashSetType();
result.add(new StringAttributeValue("urn:mace:dir:entitlement:common-lib-terms"));
if (uid == 'test001') {
result.add(new StringAttributeValue("urn:mace:nii.ac.jp:moodle:course-admin"));
}
result;
]]>
</Script>
</PermitValueRule>
</AttributeRule>
</AttributeFilterPolicy>
Author And Source
この問題について(attribute-filter.xml では属性値を変更できない), 我々は、より多くの情報をここで見つけました https://qiita.com/papillon/items/95f346e275358ad1d6a7著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .