Shibboleth の構成
このトピックの内容
- 必要な情報
Shibboleth をエンタープライズ ID プロバイダーとして Portal for ArcGIS に登録する Portal for ArcGIS を信頼できるサービス プロバイダーとして Shibboleth に登録する
Shibboleth 2.3.8 以降のバージョンを、Portal for ArcGIS でエンタープライズ ログインを設定するための ID プロバイダーとして構成できます。構成プロセスでは、主に次の 2 つの手順を実行します。まず、エンタープライズ ID プロバイダーを Portal for ArcGIS に登録し、次に、Portal for ArcGIS をエンタープライズ ID プロバイダーに登録します。
必要に応じて、アイデンティティ ストア内のエンタープライズ グループに関するメタデータをポータルに提供することもできます。これにより、ポータルに、アイデンティティ ストア内の既存のエンタープライズ グループを利用するグループを作成することができます。メンバーがポータルにログインすると、コンテンツ、アイテムおよびデータへのアクセスは、エンタープライズ グループで定義されているメンバーシップ ルールで管理されます。必要なエンタープライズ グループ メタデータを指定しなくても、グループは作成できます。しかし、メンバーシップ ルールはアイデンティティ ストアではなく、Portal for ArcGIS で管理されます。
必要な情報
Portal for ArcGIS は、ユーザーがエンタープライズ ログインを使用してログインするときに、特定の属性情報を ID プロバイダーから受信する必要があります。NameID は、Portal for ArcGIS とのフェデレーションが機能するように、ID プロバイダーが SAML レスポンスで送信する必要のある必須の属性です。IDP からユーザーがログインすると、Portal for ArcGIS によってユーザー名が NameID の新しいユーザーがユーザー ストアに作成されます。NameID 属性によって送信される値に使用できる文字は、英数字、_ (アンダースコア)、 . (ドット) および @ (アット マーク) です。その他の文字はエスケープされ、Portal for ArcGIS によってアンダースコアが付加されたユーザー名が作成されます。
Portal for ArcGIS は、エンタープライズ ログイン アカウントの givenName 属性と email address 属性を、エンタープライズ ID プロバイダーから取得して入力することをサポートしています。ユーザーがエンタープライズ ログイン アカウントを使用してサイン インし、Portal for ArcGIS が givenname と email または mail という名前の属性を取得した場合、Portal for ArcGIS はユーザー アカウントのフル ネームと電子メール アドレスに ID プロバイダーから取得した値を入力します。ユーザーが通知を受信できるようにするために、エンタープライズ ID プロバイダーから取得した email address を渡すことをお勧めします。
Shibboleth をエンタープライズ ID プロバイダーとして Portal for ArcGIS に登録する
- 組織サイトの管理者としてポータル Web サイトにサイン インし、[組織] > [サイト設定] > [セキュリティ] の順にクリックします。
- [エンタープライズ ログイン] セクションで、[ID プロバイダーの設定] ボタンをクリックし、表示されたウィンドウに組織名 (たとえば、「City of Redlands」) を入力します。ユーザーがポータル Web サイトにアクセスすると、このテキストが SAML サイン イン オプションの一部に表示されます (たとえば、「City of Redlands アカウントを使用」)。
- ユーザーが [自動] または [アカウントをポータルに追加した後] のどちらで組織に加入できるかを選択します。1 番目のオプションを選択すると、ユーザーは、管理者から招待されなくても、自分のエンタープライズ ログインを使用して組織サイトにサイン インできます。ユーザーのアカウントは、最初にサイン インしたときに自動的に組織サイトに登録されます。2 番目のオプションを選択すると、管理者は、コマンド ライン ユーティリティまたはサンプル Python スクリプトを使用して必要なアカウントを組織サイトに登録する必要があります。ユーザーは、アカウントが登録された時点で、組織サイトにサイン インできるようになります。
ヒント:
少なくとも 1 つのエンタープライズ アカウントをポータルの管理者として指定し、最初の管理者アカウントを降格するか削除することをお勧めします。また、[アカウントの作成] ボタンと、ポータル Web サイトのサインアップ ページ (signup.html) を無効化することで、ユーザーが自分のアカウントを作成できないようにしておくこともお勧めします。詳細な手順については、「ポータルでの SAML 準拠のアイデンティティ プロバイダーの構成」をご参照ください。
- 以下の 2 つのオプションのいずれかを使用して、ID プロバイダーのメタデータ情報を入力します。
- [ファイル] - デフォルトでは、Shibboleth の IdP メタデータ ファイルは、SHIBBOLETH_HOME/metadata にあります。メタデータ ファイルにアクセスできる場合は、エンタープライズ ID プロバイダーのメタデータの [ファイル] オプションを選択し、ファイル SHIBBOLETH_HOME/metadata/idp-metadata.xml を選択します。
- [パラメーター] - ファイルにアクセスできない場合は、このオプションを選択します。値を手動で入力して、要求されたパラメーター (ログイン URL および証明書) を指定します。これらの情報については、Shibboleth 管理者にお問い合わせください。
- 必要に応じて、アイデンティティ ストア内のエンタープライズ グループに関するメタデータをポータルに提供します。
- 組織の管理者として ArcGIS Portal Directory にサイン インします。URL の形式は https://webadaptor.domain.com/arcgis/portaladmin です。
- [Security] > [Config] > [Update Identity Store] の順にクリックします。
- [Group store configuration (in JSON format)] テキスト ボックスにグループ構成の JSON を入力します。
アイデンティティ ストアが Windows Active Directory の場合、次のテキストをコピーして、サイト固有の情報を含むよう変更します。
{ "type": "WINDOWS", "properties": { "isPasswordEncrypted": "false", "userPassword": "secret", "user": "mydomain\\winaccount" } }
ほとんどの場合、ユーザーとユーザー パスワードのパラメーターの値を変更するだけです。パスワードをプレーン テキストで入力しても、ポータルの構成ディレクトリに保存または表示される際には暗号化されます。ユーザー パラメーターに使用するアカウントには、ネットワーク上で Windows グループの名前を検索するための権限のみが必要です。可能な限り、パスワードに有効期限のないアカウントを使用します。
アイデンティティ ストアが LDAP の場合、次のテキストをコピーして、サイト固有の情報を含むよう変更します。
{ "type": "LDAP", "properties": { "userPassword": "secret", "isPasswordEncrypted": "false", "user": "uid=admin\,ou=system", "ldapURLForUsers": "ldap://bar2:10389/ou=users\,ou=ags\,dc=example\,dc=com", "ldapURLForRoles": "ldap://bar2:10389/dc=example,dc=com", "usernameAttribute": "cn", "caseSensitive": "false", "userSearchAttribute": "cn", "memberAttributeInRoles": "member", "rolenameAttribute":"cn" } }
ほとんどの場合、user、userPassword、ldapURLForUsers、ldapURLForUsers の各パラメーターの値を変更するだけです。LDAP の URL は、LDAP 管理者が提供する必要があります。user パラメーターに使用するアカウントは、組織サイト内のグループ名を検索する権限を持つ必要があります。パスワードをプレーン テキストで入力しても、ポータルの構成ディレクトリに保存または表示される際には暗号化されます。
LDAP が大文字と小文字を区別するように構成されている場合は、caseSensitive パラメーターを false に設定します。
- ユーザー ストア構成に JSON を入力したら、[Update Configuration] をクリックして変更を保存し、ポータルを再起動します。
Portal for ArcGIS を信頼できるサービス プロバイダーとして Shibboleth に登録する
- Portal for ArcGIS を証明書利用者として Shibboleth で構成します。
- ポータルのメタデータ ファイルを取得し、それを XML ファイルとして保存します。
メタデータ ファイルを取得するには、組織サイトの管理者としてサイン インして、組織のページを開きます。[サイト設定] ボタンと [セキュリティ] タブをクリックし、[エンタープライズ ログイン] セクションで [サービス プロバイダーの取得] ボタンをクリックします。
- RelyingParty ファイルに新しい SHIBBOLETH_HOME/conf/relying-party.xml エレメントを定義して、Portal for ArcGIS を信頼できるサービス プロバイダーとして Shibboleth に追加します。
metadata:MetadataProvider 内に次のスニペットを追加します。ステップ 1.a で保存した組織のメタデータ XML ファイルへのパスを指定します。
注意:
(webadaptor.domain.com.arcgis をポータルの SAML メタデータの entityid に置き換えます)。
<!-- Load metadata --> <MetadataProvider xsi:type="FilesystemMetadataProvider" xmlns="urn:mace:shibboleth:2.0:metadata" id="webadaptor.domain.com.arcgis" metadataFile="<PATH_TO_THE_SAVED_METADATA>/citygismetadata.xml"> </MetadataProvider>
- ポータルのメタデータ ファイルを取得し、それを XML ファイルとして保存します。
- 属性リゾルバーを構成します。
Portal for ArcGIS は、SAML の名前識別子が Portal for ArcGIS にサイン インしようとするユーザーの IDP から渡されることを想定しています。 このデータを使用可能にするには、SHIBBOLETH_HOME/conf/attribute-resolver.xml ファイルを変更して、Shibboleth の属性リゾルバーを構成する必要があります。
次の属性定義は、Shibboleth IDP によって認証されたユーザーのプリンシパル名を名前識別子として Portal for ArcGIS に送信します。
<!-- Name identifier for passing principal name to Portal for ArcGIS --> <resolver:AttributeDefinition id="principal" xsi:type="PrincipalName" xmlns="urn:mace:shibboleth:2.0:resolver:ad"> <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>
- 属性フィルターを構成します。
ユーザーの認証後に NameID として Portal for ArcGIS にエンコードされたユーザーのプリンシパル名を解放するように、Shibboleth の属性フィルターを構成します。 NameID パラメーターの値は、組織サイトでユーザー名として使用されます。
このフィルターを追加するには、SHIBBOLETH_HOME/conf/attribute-filter.xml ファイルを開き、AttributeFilterPolicyGroup XML エレメント内に次の属性フィルター ポリシーを追加します。
注意:
(webadaptor.domain.com.arcgis をポータルの SAML メタデータの entityid に置き換えます)。
<!-- release the NameID to webadaptor.domain.com.arcgis --> <afp:AttributeFilterPolicy> <afp:PolicyRequirementRule xsi:type="basic:AttributeRequesterString" value="webadaptor.domain.com.arcgis" /> <afp:AttributeRule attributeID="principal"> <afp:PermitValueRule xsi:type="basic:ANY" /> </afp:AttributeRule> </afp:AttributeFilterPolicy>
Portal for ArcGIS は、エンタープライズ ログイン アカウントの givenName 属性と email address 属性を、エンタープライズ ID プロバイダーから取得して入力することをサポートしています。ユーザーがエンタープライズ ログイン アカウントを使用してサイン インし、Portal for ArcGIS が givenname と email または mail という名前の属性を取得した場合、Portal for ArcGIS はユーザー アカウントのフル ネームと電子メール アドレスに ID プロバイダーから取得した値を入力します。
エンタープライズ ID プロバイダーから Portal for ArcGIS に電子メール アドレスを渡すことをお勧めします。 これは、ユーザーが後で管理者になる場合に便利です。アカウントに電子メール アドレスが登録されていると、管理アクティビティに関する通知を受信したり、他のユーザーが組織に加入できるように招待を送信したりできます。
- 認証ソースを構成します。
Shibboleth IdP が使用する認証ソースを構成します。次の例は、SHIBBOLETH_HOME/conf/login.config ファイルで、Shibboleth と一緒に使用するユーザー ストアとして Apache Directory Server を構成する方法を示しています。
ShibUserPassAuth { edu.vt.middleware.ldap.jaas.LdapLoginModule required ldapUrl="ldap://host:port" baseDn="ou=users,ou=system" ssl="true" serviceUser="uid=admin,ou=system" serviceCredential="secret" subtreeSearch="true" userField="uid" userFilter="uid={0}"; };
- ログイン ハンドラーを構成します。
Shibboleth で UsernamePassword ログイン ハンドラーを有効化します。ログイン ハンドラーを使用すると、前の手順で構成した認証ソースのユーザー名とパスワードを使用してサイン インできます。
ログイン ハンドラーを構成するには、SHIBBOLETH_HOME/conf/handler.xml ファイルを開き、ユーザー名とパスワードのログイン ハンドラーをコメント解除します (<SHIBBOLETH_HOME> を Shibboleth のインストール パスに置き換えます)。
<!-- Username/password login handler --> <ph:LoginHandler xsi:type="ph:UsernamePassword" jaasConfigurationLocation="file://<SHIBBOLETH_HOME>/conf/login.config"> <ph:AuthenticationMethod>urn:oasis:names:tc:SAML:2.0:ac:classes:PasswordProtectedTransport</ph:AuthenticationMethod> </ph:LoginHandler>
- Shibboleth IdP 内のアサーションの暗号化をオフにします。
Portal for ArcGIS は、ID プロバイダーからの暗号化された SAML アサーションをサポートしていないため、Shibboleth でアサーションの暗号化をオフにする必要があります。 アサーションの暗号化をオフにするには、SHIBBOLETH_HOME/conf/relying-party.xml ファイルを開き、エレメント内の "saml: SAML2SSOProfile" セクションを探します。このセクションで、encryptAssertions の値を never に変更します。
<rp:DefaultRelyingParty provider="https://grid3.esri.com/idp/shibboleth" defaultSigningCredentialRef="IdPCredential"> ... <rp:ProfileConfiguration xsi:type="saml:SAML2SSOProfile" includeAttributeStatement="true" assertionLifetime="PT5M" assertionProxyCount="0" signResponses="never" signAssertions="always" encryptAssertions="never" encryptNameIds="never" includeConditionsNotBefore="true"/> ... </rp:DefaultRelyingParty>
- Shibboleth Web アプリをホストする Web サーバーを再起動します。