SimpleSAMLphp 1.10 以降のバージョンを、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 を渡すことをお勧めします。
SimpleSAMLphp をエンタープライズ ID プロバイダーとして Portal for ArcGIS に登録する
- SimpleSAMLphp IdP の認証ソースを構成します。
- 認証ソースを作成します。
SimpleSAMLphp は、LDAP サーバー、SQL Server のユーザー、Active Directory ドメインなど、さまざまな認証ソースからのユーザー認証をサポートしています。次の例は、SimpleSAMLphp IdP で Apache Directory Server を認証ソースとして構成する方法を示しています。
認証ソースは、<SimpleSAML_HOME>/config/authsources.php ファイルで構成できます。LDAP サーバーを構成するには、config/authsources.php ファイルを開き、LDAP ベースの認証ソースを次の形式で追加します。
'example-ldapApacheDS' => array( 'ldap:LDAP', /* The hostname of the LDAP server. */ 'hostname' => 'host:port', /* Whether SSL/TLS should be used when contacting the LDAP server. */ 'enable_tls' => TRUE, /* * Which attributes should be retrieved from the LDAP server. * This can be an array of attribute names, or NULL, in which case * all attributes are fetched. */ 'attributes' => NULL, /* * The pattern which should be used to create the users DN given the username. * %username% in this pattern will be replaced with the users username. * * This option is not used if the search.enable option is set to TRUE. */ 'dnpattern' => 'uid=%username%,ou=users,ou=system', /* * As an alternative to specifying a pattern for the users DN, it is possible to * search for the username in a set of attributes. This is enabled by this option. */ 'search.enable' => FALSE, /* * The DN which will be used as a base for the search. * This can be a single string, in which case only that DN is searched, or an * array of strings, in which case they will be searched in the order given. */ 'search.base' => 'ou=users,ou=system', /* * The attribute(s) the username should match against. * * This is an array with one or more attribute names. Any of the attributes in * the array may match the value the username. */ 'search.attributes' => array('uid', 'mail'), /* * The username & password the simpleSAMLphp should bind to before searching. If * this is left as NULL, no bind will be performed before searching. */ 'search.username' => 'uid=admin,ou=system', 'search.password' => 'password', ),
Portal for ArcGIS は、エンタープライズ ログインの givenName 属性と email address 属性を、エンタープライズ ID プロバイダーから取得して入力することをサポートしています。ユーザーがエンタープライズ ログイン アカウントを使用してサイン インし、Portal for ArcGIS が givenname と email または mail という名前の属性を取得した場合、Portal for ArcGIS はユーザー アカウントのフル ネームと電子メール アドレスに ID プロバイダーから取得した値を入力します。
エンタープライズ ID プロバイダーから Portal for ArcGIS に電子メール アドレスを渡すことをお勧めします。 そうすると、ユーザーが後で管理者になる場合に役立ちます。アカウントに電子メール アドレスが登録されていると、管理アクティビティに関する通知を受信したり、他のユーザーが組織に加入できるように招待を送信したりできます。
- SimpleSAMLphp IdP で、上で作成した認証ソースを認証モジュールとして構成します。metadata/ saml20-idp-hosted.php ファイルを開き、使用する認証ソースを追加します。
/* * Authentication source to use. Must be one that is configured in * 'config/authsources.php'. */ 'auth' => 'example-ldapApacheDS',
- 認証ソースを作成します。
- SimpleSAMLphp IdP がサポートする名前識別子の形式を構成します。< SimpleSAML_HOME >/metadata/saml20-idp-hosted.php ファイルを開き、次のスニペットを追加します。次の例では、ユーザーの認証後、uid が NameID として SimpleSAMLphp IdP から Portal for ArcGIS に渡されます。
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', 'authproc' => array( 3 => array( 'class' => 'saml:AttributeNameID', 'attribute' => 'uid', 'Format' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', ), ),
- Portal for ArcGIS の組織サイトで使用する SimpleSAMLphp ID プロバイダーを登録します。
- 組織サイトの管理者としてポータル Web サイトにサイン インし、[組織] > [サイト設定] > [セキュリティ] の順にクリックします。
- [エンタープライズ ログイン] セクションで、[ID プロバイダーの設定] ボタンをクリックし、表示されたウィンドウに組織名 (たとえば、「City of Redlands」) を入力します。ユーザーがポータル Web サイトにアクセスすると、このテキストが SAML サイン イン オプションの一部に表示されます (たとえば、City of Redlands アカウントを使用)。
- ユーザーが [自動] または [アカウントをポータルに追加した後] のどちらで組織に加入できるかを選択します。1 番目のオプションを選択すると、ユーザーは、管理者から招待されなくても、自分のエンタープライズ ログインを使用して組織サイトにサイン インできます。ユーザーのアカウントは、最初にサイン インしたときに自動的に組織サイトに登録されます。2 番目のオプションを選択すると、管理者は、コマンド ライン ユーティリティまたはサンプル Python スクリプトを使用して必要なアカウントを組織サイトに登録する必要があります。ユーザーは、アカウントが登録された時点で、組織サイトにサイン インできるようになります。
ヒント:
少なくとも 1 つのエンタープライズ アカウントをポータルの管理者として指定し、最初の管理者アカウントを降格するか削除することをお勧めします。また、[アカウントの作成] ボタンと、ポータル Web サイトのサインアップ ページ (signup.html) を無効化することで、ユーザーが自分のアカウントを作成できないようにしておくこともお勧めします。詳細な手順については、「ポータルでの SAML 準拠のアイデンティティ プロバイダーの構成」をご参照ください。
- 以下の 3 つのオプションのいずれかを使用して、ID プロバイダーのメタデータ情報を入力します。
[URL] - SimpleSAMLphp フェデレーション メタデータの URL にアクセスできる場合は、このオプションを選択します。これは通常 https://<simpleSAML-server>/<saml-app-name>/saml2/idp/metadata.php です。
注意:
エンタープライズ ID プロバイダーに自己署名証明書が含まれている場合、メタデータの HTTPS URL を指定しようとしたときに、エラーが発生することがあります。このエラーは、Portal for ArcGIS が ID プロバイダーの自己署名証明書を確認できないために発生します。代わりに、URL内で HTTP を使用するか、下記の他のオプションのいずれかを使用するか、信頼できる証明書を使用して ID プロバイダーを構成してください。
[ファイル] - URL にアクセスできない場合は、このオプションを選択します。URL からのメタデータを XML ファイルとして保存し、[ファイル] オプションを使用して、そのファイルを Portal for ArcGIS にアップロードします。
[パラメーター] - URL またはファイルにアクセスできない場合は、このオプションを選択します。値を手動で入力して、要求されたパラメーター (ログイン URL および証明書) を指定します。これらの情報については、SimpleSAMLphp 管理者にお問い合わせください。
- 必要に応じて高度な設定を構成します。
- [暗号化アサーション] - SAML アサーションの応答を暗号化するように SimpleSAMLphp を構成する場合は、このオプションを選択します。
- [署名付きリクエストの有効化] - SimpleSAMLphp に送信される SAML の認証リクエストに Portal for ArcGIS が署名する場合は、このオプションを選択します。
- [ログアウト URL] - カスタムのログアウト URL を使用するように SimpleSAMLphp を構成している場合は、この値を更新します。
- [エンティティ ID] - 新しいエンティティ ID を使用してポータルを SimpleSAMLphp に対して一意に識別する場合は、この値を更新します。
[暗号化アサーション] と [署名付きリクエストの有効化] 設定では、ポータル キーストアの samlcert 証明書を使用します。新しい証明書を使用するには、「ポータルへの証明書のインポート」の手順に従って samlcert 証明書を削除し、同じエイリアス (samlcert) の新しい証明書を作成し、ポータルを再起動します。
- 必要に応じて、アイデンティティ ストア内のエンタープライズ グループに関するメタデータをポータルに提供します。
- 組織の管理者として 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 を信頼できるサービス プロバイダーとして SimpleSAMLphp に登録する
- <SimpleSAMLphp_HOME>/metatadata/saml20-sp-remote.php ファイルを構成して、SimpleSAMLphp で Portal for ArcGIS を信頼できるサービス プロバイダーとして構成します。
- Portal for ArcGIS の組織サイトのメタデータ XML ファイルを取得します。
メタデータ ファイルを取得するには、組織サイトの管理者としてサイン インして、組織のページを開きます。[サイト設定] ボタンと [セキュリティ] タブをクリックし、[エンタープライズ ログイン] セクションで [サービス プロバイダーの取得] ボタンをクリックします。
- 上の手順で取得した XML ファイルを PHP 形式に変換します。
SimpleSAMLphp では、サービス プロバイダーのメタデータ情報が PHP 形式である必要があります。SimpleSAMLphp は、XML から PHP メタデータへの内蔵コンバーターを提供します。これはデフォルトで、simpleSAMLphp のインストール ディレクトリの https://<simpleSAML-server>/<saml-app-name>/admin/metadata-converter.php にあります。このコンバーターを使用して、XML から PHP に変換します。
- metatadata/saml20-sp-remote.php ファイルを開き、手順 1.b で作成した PHP 形式のサービス プロバイダーの構成を追加します。
メタデータ ファイル内に追加されたサービス プロバイダーの構成例を次に示します。
/* The following is a Portal for ArcGIS organization service provider */ $metadata['webadaptor.domain.com.arcgis'] = array ( 'entityid' => ' webadaptor.domain.com.arcgis', 'name' => array ( 'en' => 'portal ', ), 'description' => array ( 'en' => 'portal ', ), 'OrganizationName' => array ( 'en' => 'portal ', ), 'OrganizationDisplayName' => array ( 'en' => 'portal ', ), 'url' => array ( 'en' => 'https://webadaptor.domain.com/arcgis', ), 'OrganizationURL' => array ( 'en' => 'https://webadaptor.domain.com/arcgis', ), 'contacts' => array ( ), 'metadata-set' => 'saml20-sp-remote', 'AssertionConsumerService' => array ( 0 => array ( 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST', 'Location' => 'https://webadaptor.domain.com/arcgis/sharing/rest/oauth2/saml/signin', 'index' => 1, ), 1 => array ( 'Binding' => 'urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect', 'Location' => 'https://webadaptor.domain.com/arcgis/sharing/rest/oauth2/saml/signin', 'index' => 2, ), ), 'SingleLogoutService' => array ( ), );
- Portal for ArcGIS の組織サイトのメタデータ XML ファイルを取得します。
- ユーザーの認証後、SimpleSAMLphp IdP から Portal for ArcGIS に NameID として渡される属性を構成します。 これを行うには、前の手順で追加したサービス プロバイダーの構成の最後に、属性を追加します。
次の例では、ユーザーの認証後、uid が NameID として SimpleSAMLphp IdP から Portal for ArcGIS に渡されます (webadaptor.domain.com.arcgis をポータルの URL に置き換えます)。
'NameIDFormat' => 'urn:oasis:names:tc:SAML:2.0:nameid-format:persistent', 'simplesaml.nameidattribute' => 'uid', /* The following indicates whether to send all the attributes received from the authentication source to the service provider or not. If true, it will send, otherwise it will not send all the attributes*/ 'simplesaml.attributes' => true, );
- SimpleSAMLphp をエンタープライズ ID プロバイダーとして登録するときに高度な設定で [暗号化アサーション] を選択した場合は、ステップ 1 で追加したサービス プロバイダーの構成の末尾に以下の属性を追加します。
/* Whether assertions sent to this SP should be encrypted. The default value is FALSE. */ 'assertion.encryption' => true, );