Shibboleth 3.2x および 3.3.x を Portal for ArcGIS のエンタープライズ ログイン アカウントの ID プロバイダー (IDP) として構成できます。構成プロセスでは、主に次の 2 つの手順を実行します。まず、エンタープライズ IDP を Portal for ArcGIS に登録し、次に、Portal for ArcGIS をエンタープライズ IDP に登録します。
必要な情報
Portal for ArcGIS は、ユーザーがエンタープライズ ログインを使用してログインするときに、特定の属性情報を IDP から受信する必要があります。NameID は、Portal for ArcGIS とのフェデレーションが機能するように、IDP が SAML レスポンスで送信しなければならない必須の属性です。Portal for ArcGIS は NameID の値を使用して指定ユーザーを一意に識別するため、ユーザーを一意に識別する定数値を使用することをお勧めします。IDP からユーザーがログインすると、NameID というユーザー名の新しいユーザーが、Portal for ArcGIS によってユーザー ストアに作成されます。NameID によって送信される値に使用できる文字は、英数字、_ (アンダースコア)、 . (ドット) および @ (アット マーク) です。その他の文字はエスケープされ、Portal for ArcGIS によってアンダースコアが付加されたユーザー名が作成されます。
Portal for ArcGIS は、エンタープライズ ログインの givenName 属性と email address 属性を、エンタープライズ IDP から取得して入力することをサポートしています。ユーザーがエンタープライズ ログイン アカウントを使用してサイン インし、Portal for ArcGIS が givenname と email または mail という名前の属性を取得した場合、Portal for ArcGIS はユーザー アカウントのフル ネームと電子メール アドレスに IDP から取得した値を入力します。ユーザーが通知を受信できるようにするために、エンタープライズ IDP から取得した email address を渡すことをお勧めします。
Shibboleth をエンタープライズ IDP として Portal for ArcGIS に登録する
- 組織サイトの管理者としてポータル Web サイトにサイン インし、[組織] > [サイト設定] > [セキュリティ] の順にクリックします。
- [エンタープライズ ログイン] セクションで、[1 つの ID プロバイダー] オプションを選択して [エンタープライズ ログインの設定] ボタンをクリックし、表示されたウィンドウに組織名 (たとえば、「City of Redlands」) を入力します。ユーザーがポータル Web サイトにアクセスすると、このテキストが SAML サイン イン オプションの一部に表示されます (たとえば、City of Redlands アカウントを使用)。
注意:
ポータル用に登録できるエンタープライズ IDP または IDP のフェデレーションは 1 つだけです。
- ユーザーが [自動] または [アカウントをポータルに追加した後] のどちらで組織に加入できるかを選択します。1 番目のオプションを選択すると、ユーザーは、管理者が介入しなくても、自分のエンタープライズ ログインを使用してポータルにサイン インできます。ユーザーのアカウントは、最初にサイン インしたときに自動的にポータルに登録されます。2 番目のオプションを選択すると、管理者は、コマンド ライン ユーティリティまたはサンプル Python スクリプトを使用して必要なアカウントをポータルに登録する必要があります。ユーザーは、アカウントが登録された時点で、ポータルにサイン インできるようになります。
ヒント:
少なくとも 1 つのエンタープライズ アカウントをポータルの管理者として指定し、最初の管理者アカウントを降格するか削除することをお勧めします。また、[アカウントの作成] ボタンと、ポータル Web サイトのサインアップ ページ (signup.html) を無効化することで、ユーザーが自分のアカウントを作成できないようにしておくこともお勧めします。詳細な手順については、「ポータルでの SAML 準拠のアイデンティティ プロバイダーの構成」をご参照ください。
- 次の 2 つのオプションのいずれかを使用して、IDP のメタデータ情報を入力します。
- [ファイル] - デフォルトでは、Shibboleth の IDP メタデータ ファイルは、SHIBBOLETH_HOME/metadata にあります。メタデータ ファイルにアクセスできる場合は、エンタープライズ IDP のメタデータの [ファイル] オプションを選択し、SHIBBOLETH_HOME/metadata/idp-metadata.xml ファイルを選択します。 Portal for ArcGIS は、IDP メタデータ ファイル内の最初の署名証明書を使用して、Shibboleth からの SAML アサーションの応答に含まれるシグネチャを検証します。しかし、デフォルトでは、Shibboleth IDP メタデータ ファイル内に最初にリストされているシグネチャはバック チャンネル TLS 通信用であり、署名アサーションの応答に使用されるのは 2 番目のシグネチャです。そのため、最初のシグネチャをコメント化するか、または 2 番目のシグネチャの下に最初のシグネチャを移動し、更新されたメタデータ ファイルを使用して Shibboleth を Portal for ArcGIS に登録する必要があります。これらのシグネチャは、メタデータ ファイル内の <KeyDescriptor use="signing"> エレメントを使用して定義されます。
- [パラメーター] - URL にもフェデレーション メタデータ ファイルにもアクセスできない場合は、このオプションを選択します。値を手動で入力して、要求されたパラメーター (BASE 64 形式でエンコードされたログイン URL および証明書) を指定します。これらの情報については、Shibboleth 管理者にお問い合わせください。
- 必要に応じて高度な設定を構成します。
- [暗号化アサーション] - SAML アサーションの応答を暗号化するように Shibboleth を構成する場合は、このオプションを選択します。
- [署名付きリクエストの有効化] - Shibboleth に送信される SAML の認証リクエストに Portal for ArcGIS が署名する場合は、このオプションを選択します。
- [エンティティ ID] - 新しいエンティティ ID を使用してポータルを Shibboleth に対して一意に識別する場合は、この値を更新します。
- [サイン イン時にプロフィールを更新] - ユーザーの givenName および email address 属性が前回のログイン以降に変更された場合に Portal for ArcGIS によって更新するには、このオプションを選択します。
- [SAML ベースのグループのメンバーシップを有効化] - このオプションを選択すると、組織メンバーが、グループ作成処理中に、指定された SAML ベースのエンタープライズ グループを、Portal for ArcGISグループにリンクできるようになります。
[暗号化アサーション] 設定と [署名付きリクエストの有効化] 設定では、ポータル キーストア内の samlcert 証明書が使用されます。新しい証明書を使用するには、「ポータルへの証明書のインポート」の手順に従って samlcert 証明書を削除し、同じエイリアス (samlcert) の新しい証明書を作成し、ポータルを再起動します。
注意:
現在、[ID プロバイダーへのログアウトの反映] と [ログアウト URL] はサポートされていません。
Portal for ArcGIS を信頼できるサービス プロバイダーとして Shibboleth に登録する
- Portal for ArcGIS を証明書利用者として Shibboleth で構成します。
- ポータルのメタデータ ファイルを取得し、それを XML ファイルとして保存します。
メタデータ ファイルを取得するには、組織サイトの管理者としてサイン インして、組織のページを開きます。[サイト設定] ボタンをクリックして [セキュリティ] タブをクリックし、[エンタープライズ ログイン] セクションで [サービス プロバイダーの取得] ボタンをクリックします。
- MetadataProvider ファイルに新しい SHIBBOLETH_HOME/conf/metadata-providers.xml エレメントを定義して、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" />
- ポータルのメタデータ ファイルを取得し、それを XML ファイルとして保存します。
- ユーザー認証を構成します。次の例では、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
- Shibboleth から返されるユーザー属性を構成します。
- SHIBBOLETH_HOME/conf/attribute-resolver.xml を編集します。既存のすべてのサンプル属性定義とデータ コネクタにコメントを付けるか、削除します。
- mail および givenName の定義を SHIBBOLETH_HOME/conf/attribute-resolver-full.xml ファイルから SHIBBOLETH_HOME/conf/attribute-resolver.xml ファイルにコピーします。
- LDAP データ コネクタ セクションを SHIBBOLETH_HOME/conf/attribute-resolver-ldap.xml から SHIBBOLETH_HOME/conf/attribute-resolver.xml にコピーします。NAMEID 属性として返す UID または他の属性の定義をコピーします。
- サービス プロバイダーに公開するための属性を構成します。SHIBBOLETH_HOME/conf/attribute-filter.xml ファイルを編集し、次の記述を追加します。
<AttributeFilterPolicy id="ArcGIS"> <PolicyRequirementRule xsi:type="Requester" value="[The Entity ID of your Portal instance]" /> <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>
- SHIBBOLETH_HOME/conf/relying-party.xml ファイルを次のように編集します。
- 次の XML コードをコピーし、shibboleth.RelyingPartyOverrides エレメント内に貼り付けて、Shibboleth ID プロバイダーのデフォルト構成を無効にします。
<bean parent="RelyingPartyByName" c:relyingPartyIds="[The Entity ID of your Portal instance]"> <property name="profileConfigurations"> <list> <bean parent="SAML2.SSO" p:nameIDFormatPrecedence="urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified" /> </list> </property> </bean>
nameIDFormatPrecedence パラメーターを使用して、ArcGIS Online および Portal for ArcGIS で必要となる SAML 名前 ID 属性を unspecified 形式で送信するように IDP に指示します。
- encryptAssertions パラメーターを false に設定して、Shibboleth ID プロバイダーでのアサーションの暗号化を無効にします。
<bean parent="RelyingPartyByName" c:relyingPartyIds="[The Entity ID of your Portal instance]"> <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>
- 次の XML コードをコピーし、shibboleth.RelyingPartyOverrides エレメント内に貼り付けて、Shibboleth ID プロバイダーのデフォルト構成を無効にします。
- 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'} }" />
- Shibboleth のデーモン (Linux) またはサービス (Windows) を再起動します。