[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[upki-fed:01016] Re: Shibboleth IdP 3におけるFPSP相当機能の条件記述について



NII 西村様

慶應義塾ITC本部の細川です。

やってみました。

これはこれで冗長そうな印象ではありますが、どうやら動いているような気がします。
少なくともentityIDを書く場所が1箇所になったので、これなら実用になるのではないかと思います。

ありがとうございました。

  <bean id="shibboleth.context-check.Condition" parent="shibboleth.Conditions.NOT">
    <constructor-arg>
      <list>
        <bean id="shibboleth.context-check.Condition" parent="shibboleth.Conditions.OR">
          <constructor-arg>
            <list>
              <bean id="shibboleth.context-check.Condition" parent="shibboleth.Conditions.AND">
                <constructor-arg>
                  <list>
                    <bean parent="shibboleth.Conditions.RelyingPartyId" c:candidates="#{ 'entityID-A' }" />
                    <bean id="shibboleth.context-check.Condition" parent="shibboleth.Conditions.NOT">
                      <constructor-arg>
                        <list>
                          <bean class="net.shibboleth.idp.profile.logic.SimpleAttributePredicate"
                                p:useUnfilteredAttributes="true">
                            <property name="attributeValueMap">
                              <map>
                                <entry key="eduPersonAffiliation">
                                  <list>
                                    <value>faculty</value>
                                    <value>staff</value>
                                  </list>
                                </entry>
                              </map>
                            </property>
                          </bean>
                        </list>
                      </constructor-arg>
                    </bean>
                  </list>
                </constructor-arg>
              </bean>
              <bean id="shibboleth.context-check.Condition" parent="shibboleth.Conditions.AND">
                <constructor-arg>
                  <list>
                    <bean parent="shibboleth.Conditions.RelyingPartyId" c:candidates="#{ 'entityID-B' }" />
                    <bean id="shibboleth.context-check.Condition" parent="shibboleth.Conditions.NOT">
                      <constructor-arg>
                        <list>
                          <bean class="net.shibboleth.idp.profile.logic.SimpleAttributePredicate"
                                p:useUnfilteredAttributes="true">
                            <property name="attributeValueMap">
                              <map>
                                <entry key="eduPersonAffiliation">
                                  <list>
                                    <value>faculty</value>
                                  </list>
                                </entry>
                              </map>
                            </property>
                          </bean>
                        </list>
                      </constructor-arg>
                    </bean>
                  </list>
                </constructor-arg>
              </bean>
            </list>
          </constructor-arg>
        </bean>
      </list>
    </constructor-arg>
  </bean>

# 概ね、本塾の学認IdPの3.2.1化準備は完了しました。これからテスト段階に入ります。

細川

On 2016/02/09 18:20, Takeshi NISHIMURA wrote:
> NIIの西村です。
> 
>> この場合、「その他」を表す部分である、
> ...
>> がないとやはり動作しなかった(「その他」のSPが全部利用できなくなる)のですが、
>> ここの記述にも最初の条件の2つのentityIDが存在していて、
>> ちょっと綺麗じゃないな(後日メンテナンス時に忘れそうで怖い…)的な印象を持ちました。
> 
> 実は私も気になっておりました。
> 単なる思い付きで恐縮ですが、各entityIDで拒否する条件を列挙して、全体のNOTをとるとか?
> 
> On 2016/02/05 18:15, Tatsumi Hosokawa wrote:
>> 慶應義塾ITC本部の細川です。
>>
>> 現在、
>> https://meatwiki.nii.ac.jp/confluence/pages/viewpage.action?pageId=20021272
>> あたりを見ながら、FPSP対応の学認IdPをShibboleth 3.2.1に移行する実験をしているのですが、
>> conf/intercept/context-check-intercept.xml での条件の書き方に悩んでいます。
>>
>> たとえば、
>>
>> entityID-A: edupersonAffiliation が faculty または staff
>> entityID-B: edupersonAffiliation が faculty
>> その他: 制限なし
>>
>> の条件でフィルタしたいと思った場合、とりあえず次のように書いてみたのですが、動いていそうな雰囲気です。
>>
>>     <bean id="shibboleth.context-check.Condition" parent="shibboleth.Conditions.OR">
>>       <constructor-arg>
>>         <list>
>>           <bean id="shibboleth.context-check.Condition" parent="shibboleth.Conditions.AND">
>>             <constructor-arg>
>>               <list>
>>                 <bean parent="shibboleth.Conditions.RelyingPartyId" c:candidates="#{ 'entityID-A' }" />
>>                 <bean class="net.shibboleth.idp.profile.logic.SimpleAttributePredicate"
>>                       p:useUnfilteredAttributes="true">
>>                   <property name="attributeValueMap">
>>                     <map>
>>                       <entry key="eduPersonAffiliation">
>>                         <list>
>>                           <value>faculty</value>
>>                           <value>staff</value>
>>                         </list>
>>                       </entry>
>>                     </map>
>>                   </property>
>>                 </bean>
>>               </list>
>>             </constructor-arg>
>>           </bean>
>>           <bean id="shibboleth.context-check.Condition" parent="shibboleth.Conditions.AND">
>>             <constructor-arg>
>>               <list>
>>                 <bean parent="shibboleth.Conditions.RelyingPartyId" c:candidates="#{ 'entityID-B' }" />
>>                 <bean class="net.shibboleth.idp.profile.logic.SimpleAttributePredicate"
>>                       p:useUnfilteredAttributes="true">
>>                   <property name="attributeValueMap">
>>                     <map>
>>                       <entry key="eduPersonAffiliation">
>>                         <list>
>>                           <value>faculty</value>
>>                         </list>
>>                       </entry>
>>                     </map>
>>                   </property>
>>                 </bean>
>>               </list>
>>             </constructor-arg>
>>           </bean>
>>           <bean id="shibboleth.context-check.Condition" parent="shibboleth.Conditions.NOT">
>>             <constructor-arg>
>>               <list>
>>                 <bean parent="shibboleth.Conditions.RelyingPartyId" c:candidates="#{{ 'entityID-A', 'entityID-B' }}" />
>>               </list>
>>             </constructor-arg>
>>           </bean>
>>         </list>
>>       </constructor-arg>
>>     </bean>
>>
>> この場合、「その他」を表す部分である、
>>
>>           <bean id="shibboleth.context-check.Condition" parent="shibboleth.Conditions.NOT">
>>             <constructor-arg>
>>               <list>
>>                 <bean parent="shibboleth.Conditions.RelyingPartyId" c:candidates="#{{ 'entityID-A', 'entityID-B' }}" />
>>               </list>
>>             </constructor-arg>
>>           </bean>
>>
>> がないとやはり動作しなかった(「その他」のSPが全部利用できなくなる)のですが、
>> ここの記述にも最初の条件の2つのentityIDが存在していて、
>> ちょっと綺麗じゃないな(後日メンテナンス時に忘れそうで怖い…)的な印象を持ちました。
>>
>> これはこのように書くのがやはり適切なのでしょうか、それとももっとシンプルな書き方があるのでしょうか?
>>
>> もしご存知の方、いらっしゃいましたらご教授いただけますでしょうか。
>>
>> よろしくお願いいたします。
> 


-- 
慶應義塾ITC本部  細川達己  xxxxxxxx@xxxxxxxxxxxxxx
Tel. 03-5427-1685  Fax. 03-5427-1722