ArcGIS OnlineにShibboleth IdPでSSO設定する際のメモ


概要

ArcGIS OnlineはSAML認証に対応しており、Shibboleth IdPとの認証連携も可能となっている。

設定メモ

基本的にはESRI社のドキュメントに従って設定するが、注意点や変更可能な点がある。

ログインボタンの設定

ArcGIS Onlineのログイン画面にSAMLログイン用のボタンを表示する際のテキストを設定できる。ここで漢字などのマルチバイト文字を利用すると、ログインボタンが動作しない。

エンティティIDの指定

Shibboleth IdPとShibboleth SPの組み合わせの場合、一般的にエンティティIDには

<PolicyRequirementRule xsi:type="Requester" value="https://sp.example.com/shibboleth-sp" />

のようなにURLを指定するが、ArcGIS Onlineの場合は、 スキームのないFQDNで指定する。

conf/attribute-filter.xml
    <AttributeFilterPolicy id="ArcGIS">
-       <PolicyRequirementRule xsi:type="Requester" value="[The Entity ID of your ArcGIS Online organization]" />
+       <PolicyRequirementRule xsi:type="Requester" value="your-id.maps.arcgis.com" />

NameIDの指定

ArcGIS Onlineで利用するユーザIDとして、Shibboleth IdPからNameIDを送出する必要がある。ちなみにePTIDを利用しようとするとArcGIS Online側で不正とみなされ、ログインが失敗する。

以下の設定では、NameIDとしてuidまたはemailを利用できるよう定義している。

conf/saml-nameid.xml
        <util:list id="shibboleth.SAML2NameIDGenerators">
            <ref bean="shibboleth.SAML2TransientGenerator" />
+               <bean parent="shibboleth.SAML2AttributeSourcedGenerator"
+                   p:omitQualifiers="true"
+                   p:format="urn:oasis:names:tc:SAML:1.1:nameid-format:username"
+                   p:attributeSourceIds="#{ {'uid'} }" />
+
+               <bean parent="shibboleth.SAML2AttributeSourcedGenerator"
+                   p:omitQualifiers="true"
+                   p:format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
+                   p:attributeSourceIds="#{ {'mail'} }" />
        </util:list>

特定のサービスでどの属性値をNameIDとして利用するか、RelyingPartyOerridesとして設定する。
relyingPartyIdsで指定したエンティティIDのサービスについて設定が上書きされるため、ArcGIS OnlineのエンティティIDを指定する。ここではemailを利用する設定だが、p:nameIDFormatPrecedenceの値を、先で定義したp:formatに合わせて変えることで変更可能。

conf/relying-party.xml
        <util:list id="shibboleth.RelyingPartyOverrides">
+           <bean parent="RelyingPartyByName" c:relyingPartyIds="your-id.maps.arcgis.com">
+               <property name="profileConfigurations">
+                   <list>
+                       <bean parent="SAML2.SSO"
+                           p:nameIDFormatPrecedence="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
+                           p:encryptAssertions="false" />
+                   </list>
+               </property>
+           </bean>
        </util:list>

attribute-filterの設定

ArcGIS OnlineへのSSOにはmail属性が必須のため送出する必要があるが、givenNameは任意となっている。前項のようにNameIDとしてmailを利用する場合は、attribute-filterの記述は下記のようになる。

conf/attribute-filter.xml
+       <AttributeFilterPolicy id="ArcGISOnline">
+           <PolicyRequirementRule xsi:type="Requester" value="your-id.maps.arcgis.com" />
+           <!--<AttributeRule attributeID="givenName" permitAny="true" />-->
+           <AttributeRule attributeID="mail" permitAny="true" />
+       </AttributeFilterPolicy>
    </AttributeFilterPolicyGroup>