Skip To Content

Shibboleth の構成

Shibboleth 3.2x を Portal for ArcGIS のエンタープライズ ログイン アカウントの ID プロバイダー (IDP) として構成できます。構成プロセスでは、主に次の 2 つの手順を実行します。まず、エンタープライズ ID プロバイダーを Portal for ArcGIS に登録し、次に、Portal for ArcGIS をエンタープライズ ID プロバイダーに登録します。

必要に応じて、アイデンティティ ストア内のエンタープライズ グループに関するメタデータをポータルに提供することもできます。これにより、アイデンティティ ストア内の既存のエンタープライズ グループを利用する、ポータル内のグループを作成することができます。メンバーがポータルにログインすると、コンテンツ、アイテム、およびデータへのアクセスは、エンタープライズ グループで定義されているメンバーシップ ルールで管理されます。必要なエンタープライズ グループ メタデータを指定しなくても、グループは作成できます。しかし、メンバーシップ ルールはアイデンティティ ストアではなく、Portal for ArcGIS で管理されます。

必要な情報

Portal for ArcGIS は、ユーザーがエンタープライズ ログインを使用してログインするときに、特定の属性情報を ID プロバイダーから受信する必要があります。NameID は、Portal for ArcGIS とのフェデレーションが機能するように、ID プロバイダーが SAML レスポンスで送信しなければならない必須の属性です。IDP からユーザーがログインすると、NameID というユーザー名の新しいユーザーが、Portal for ArcGIS によってユーザー ストアに作成されます。NameID 属性によって送信される値に使用できる文字は、英数字、_ (アンダースコア)、 . (ドット) および @ (アット マーク) です。その他の文字はエスケープされ、Portal for ArcGIS によってアンダースコアが付加されたユーザー名が作成されます。

Portal for ArcGIS は、エンタープライズ ログインの givenName 属性と email address 属性を、エンタープライズ ID プロバイダーから取得して入力することをサポートしています。ユーザーがエンタープライズ ログイン アカウントを使用してサイン インし、Portal for ArcGISgivennameemail または mail という名前の属性を取得した場合、Portal for ArcGIS はユーザー アカウントのフル ネームと電子メール アドレスに ID プロバイダーから取得した値を入力します。ユーザーが通知を受信できるようにするために、エンタープライズ ID プロバイダーから取得した email address を渡すことをお勧めします。

Shibboleth をエンタープライズ ID プロバイダーとして Portal for ArcGIS に登録する

  1. 組織サイトの管理者としてポータル Web サイトにサイン インし、[組織] > [サイト設定] > [セキュリティ] の順にクリックします。
  2. [エンタープライズ ログイン] セクションで、[ID プロバイダーの設定] ボタンをクリックし、表示されたウィンドウに組織名 (たとえば、「City of Redlands」) を入力します。ユーザーがポータル Web サイトにアクセスすると、このテキストが SAML サイン イン オプションの一部に表示されます (たとえば、City of Redlands アカウントを使用)。
    注意:

    ポータル用に登録できるエンタープライズ ID プロバイダーは 1 つだけです。

  3. ユーザーが [自動] または [アカウントをポータルに追加した後] のどちらで組織に加入できるかを選択します。1 番目のオプションを選択すると、ユーザーは、管理者から招待されなくても、自分のエンタープライズ ログインを使用して組織サイトにサイン インできます。ユーザーのアカウントは、最初にサイン インしたときに自動的に組織サイトに登録されます。2 番目のオプションを選択すると、管理者は、コマンド ライン ユーティリティまたはサンプル Python スクリプトを使用して必要なアカウントを組織サイトに登録する必要があります。ユーザーは、アカウントが登録された時点で、組織サイトにサイン インできるようになります。
    ヒント:

    少なくとも 1 つのエンタープライズ アカウントをポータルの管理者として指定し、最初の管理者アカウントを降格するか削除することをお勧めします。また、[アカウントの作成] ボタンと、ポータル Web サイトのサインアップ ページ (signup.html) を無効化することで、ユーザーが自分のアカウントを作成できないようにしておくこともお勧めします。詳細な手順については、「ポータルでの SAML 準拠のアイデンティティ プロバイダーの構成」をご参照ください。

  4. 以下の 2 つのオプションのいずれかを使用して、ID プロバイダーのメタデータ情報を入力します。
    • [ファイル] - デフォルトでは、Shibboleth の IdP メタデータ ファイルは、SHIBBOLETH_HOME/metadata にあります。メタデータ ファイルにアクセスできる場合は、エンタープライズ ID プロバイダーのメタデータの [ファイル] オプションを選択し、ファイル SHIBBOLETH_HOME/metadata/idp-metadata.xml を選択します。
    • [パラメーター] - ファイルにアクセスできない場合は、このオプションを選択します。値を手動で入力して、要求されたパラメーター (ログイン URL および証明書) を指定します。これらの情報については、Shibboleth 管理者にお問い合わせください。
  5. 必要に応じて高度な設定を構成します。
    • [暗号化アサーション] - SAML アサーションの応答を暗号化するように Shibboleth を構成する場合は、このオプションを選択します。
    • [署名付きリクエストの有効化] - Shibboleth に送信される SAML の認証リクエストに Portal for ArcGIS が署名する場合は、このオプションを選択します。
    • [エンティティ ID] - 新しいエンティティ ID を使用してポータルを Shibboleth に対して一意に識別する場合は、この値を更新します。

    [暗号化アサーション][署名付きリクエストの有効化] 設定では、ポータル キーストアの samlcert 証明書を使用します。新しい証明書を使用するには、「ポータルへの証明書のインポート」の手順に従って samlcert 証明書を削除し、同じエイリアス (samlcert) の新しい証明書を作成し、ポータルを再起動します。

    注意:

    現在、[ID プロバイダーへのログアウトの反映][ログアウト URL] はサポートされていません。

  6. 必要に応じて、アイデンティティ ストア内のエンタープライズ グループに関するメタデータをポータルに提供します。
    1. 組織の管理者として ArcGIS Portal Directory にサイン インします。URL の形式は https://webadaptorhost.domain.com/webadaptorname/portaladmin です。
    2. [Security] > [Config] > [Update Identity Store] の順にクリックします。
    3. [Group store configuration (in JSON format)] テキスト ボックスにグループ構成の JSON を入力します。
      • 次のテキストをコピーし、サイト固有の情報を含めるように変更します。

        {
          "type": "LDAP",  "properties": {
            "userPassword": "secret",    "isPasswordEncrypted": "false",    "user": "uid=admin,ou=system",    "ldapURLForUsers": "ldaps://bar2:10636/ou=users,ou=ags,dc=example,dc=com",    "ldapURLForRoles": "ldaps://bar2:10636/dc=example,dc=com",    "usernameAttribute": "cn",    "caseSensitive": "false",    "userSearchAttribute": "cn",    "memberAttributeInRoles": "member",    "rolenameAttribute":"cn"
          }
        }

        ほとんどの場合、[user]、[userPassword]、[ldapURLForUsers]、および [ldapURLForRoles] パラメーターの値を変更するだけで済みます。LDAP の URL は、LDAP 管理者が提供する必要があります。

        上記の例では、LDAP URL は特定の OU (ou = ユーザー グループ) 内のユーザーを参照します。ユーザーが複数の OU に存在する場合、LDAP URL では、より上位の OU を指定するか、必要であればルート OU を指定します。その場合は、URL は以下のようになります。

        "ldapURLForUsers": "ldaps://bar2:10636/dc=example,dc=com",

        user パラメーターに使用するアカウントは、組織サイト内のグループ名を検索する権限を持つ必要があります。パスワードをプレーン テキストで入力しても、ポータルの構成ディレクトリに保存または表示される際には暗号化されます。

        LDAP が大文字と小文字を区別しないように構成されている場合は、caseSensitive パラメーターを false に設定します。

    4. ユーザー ストア構成に JSON を入力したら、[Update Configuration] をクリックして変更を保存し、ポータルを再起動します。

Portal for ArcGIS を信頼できるサービス プロバイダーとして Shibboleth に登録する

  1. Portal for ArcGIS を証明書利用者として Shibboleth で構成します。
    1. ポータルのメタデータ ファイルを取得し、それを XML ファイルとして保存します。

      メタデータ ファイルを取得するには、組織サイトの管理者としてサイン インして、組織のページを開きます。[サイト設定] ボタンをクリックして [セキュリティ] タブをクリックし、[エンタープライズ ログイン] セクションで [サービス プロバイダーの取得] ボタンをクリックします。

    2. SHIBBOLETH_HOME/conf/metadata-providers.xml ファイルに新しい MetadataProvider エレメントを定義して、Portal for ArcGIS を信頼できるサービス プロバイダーとして Shibboleth 内に構成します。

      ルート MetadataProvider エレメント内に次のスニペットを追加します。(上記のステップ 1.a で保存した) 組織のメタデータ XML ファイルへのパスを指定します。

      <MetadataProvider id="EsriSP" xsi:type="FilesystemMetadataProvider"
      xmlns="urn:mace:shibboleth:2.0:metadata" 
      	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      	xsi:schemaLocation="urn:mace:shibboleth:2.0:metadata http://shibboleth.net/schema/idp/shibboleth-metadata.xsd"
      	failFastInitialization="true"
      	metadataFile=" <PATH_TO_THE_SAVED_METADATA>/esri-sp-metadata.xml" />
  2. ユーザー認証を構成します。次の例では、SHIBBOLETH_HOME/conf/ldap.properties: ファイル内の必要なプロパティを更新して、LDAP Directory Server をユーザー ストアとして構成します。

    idp.authn.LDAP.authenticator = bindSearchAuthenticator

    idp.authn.LDAP.ldapURL = ldaps://myldap.example.org:port

    idp.authn.LDAP.baseDN = ou=People,dc=example,dc=org

    idp.authn.LDAP.userFilter= (uid={user})

    idp.authn.LDAP.bindDN = cn=readonlyuser,dc=example,dc=org

    idp.authn.LDAP.bindDNCredential = userpassword

  3. Shibboleth から返されるユーザー属性を構成します。
    1. SHIBBOLETH_HOME/conf/attribute-resolver.xml を編集します。既存のすべてのサンプル属性定義とデータ コネクタにコメントを付けるか、削除します。
    2. mail および givenName の定義を SHIBBOLETH_HOME/conf/attribute-resolver-full.xml ファイルから SHIBBOLETH_HOME/conf/attribute-resolver.xml ファイルにコピーします。次に、名前 ID として使用される属性に対して次のエントリを追加します。

      <resolver:AttributeDefinition xsi:type="ad:Simple" id="<NameID attribute>" sourceAttributeID ="<NameID attribute>">
      			<resolver:Dependency ref="myLDAP" />
      			<resolver:AttributeEncoder xsi:type="SAML2StringNameID" xmlns="urn:mace:shibboleth:2.0:attribute:encoder"
      					nameFormat="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified" />
      		</resolver:AttributeDefinition>

    3. LDAP データ コネクタ セクションを SHIBBOLETH_HOME/conf/attribute-resolver-ldap.xml から SHIBBOLETH_HOME/conf/attribute-resolver.xml にコピーします。
    4. サービス プロバイダーに公開するための属性を構成します。SHIBBOLETH_HOME/conf/attribute-filter.xml ファイルを編集し、次の記述を追加します。
    注意:

    mygis.maps.arcgis.com を組織サイトのエンティティ ID に置き換えます。

    <AttributeFilterPolicy id="ArcGIS">
            <PolicyRequirementRule xsi:type="Requester" value="mygis.maps.arcgis.com" />
    			<AttributeRule attributeID="<NameID Attribute>">
    				<PermitValueRule xsi:type="ANY" />
    			</AttributeRule>
    			<AttributeRule attributeID="givenName">
    				<PermitValueRule xsi:type="ANY" />
    			</AttributeRule>
    			<AttributeRule attributeID="mail">
    				<PermitValueRule xsi:type="ANY" />
    			</AttributeRule>
    		</AttributeFilterPolicy>
  4. SHIBBOLETH_HOME/conf/relying-party.xml ファイルを次のように編集します。
    1. 次の XML コードをコピーし、shibboleth.RelyingPartyOverrides エレメント内に貼り付けて、Shibboleth ID プロバイダーのデフォルト構成を無効にします。
      <util:list id="shibboleth.RelyingPartyOverrides">
      <bean parent="RelyingPartyByName" c:relyingPartyIds="mygis.maps.arcgis.com">
      <property name="profileConfigurations">
       <list>
        <bean parent="SAML2.SSO"    p:nameIDFormatPrecedence="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified" />
       </list>
      </property>
      </bean>
          </util:list>
      注意:

      mygis.maps.arcgis.com を組織サイトのエンティティ ID に置き換えます。

      nameIDFormatPrecedence パラメーターを使用して、ArcGIS Online および Portal for ArcGIS で必要となる SAML 名前 ID 属性を unspecified 形式で送信するように ID プロバイダーに指示します。

    2. encryptAssertions パラメーターを false に設定して、Shibboleth ID プロバイダーでのアサーションの暗号化を無効にします。
      <bean parent="RelyingPartyByName" c:relyingPartyIds="mygis.maps.arcgis.com">
      		<property name="profileConfigurations">
      			<list>
      				<bean parent="SAML2.SSO" 					p:nameIDFormatPrecedence="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified" 
      					p:encryptAssertions="false" />
      			</list>
      		</property>
      		</bean>
  5. SHIBBOLETH_HOME/conf/saml-nameid.xml ファイルを編集して、このセクションを
    <!--
    <bean parent="shibboleth.SAML2AttributeSourcedGenerator"
       p:format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress"
       p:attributeSourceIds="#{ {'mail'} }" />
    -->

    次のように置き換えます。

    <bean parent="shibboleth.SAML2AttributeSourcedGenerator"
                p:format="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified"
                p:attributeSourceIds="#{ {'your-name-id-attribute'} }" />

  6. Shibboleth のデーモン (Linux) またはサービス (Windows) を再起動します。