デフォルトでは、Google Cloud Search は Google Cloud Directory の Google ID のみを認識します。ID コネクタを使用して、企業の ID を Cloud Search で使用される Google ID と同期します。
Google は、ID コネクタを開発するための以下のオプションを提供しています。
Identity Connector SDK: Java プログラマーに最適です。SDK は、コネクタをすばやく作成するための REST API を簡単に使えるようにしたラッパーです。SDK の使用方法については、Identity Connector SDK を使用して ID コネクタを作成するをご覧ください。
低レベル REST API と API ライブラリ: Java 以外のプログラマーに最適です。REST API を使用して ID コネクタを作成するには、ユーザーのマッピングについては Directory API: ユーザー アカウントを、グループのマッピングについては Google Cloud Identity のドキュメントをご覧ください。
Identity Connector SDK を使用して ID コネクタを作成する
ID コネクタによって行われる標準的なタスクは、次のとおりです。
- コネクタを構成します。
- ID システムからユーザーを取得して Google に送信します。
- ID システムからグループを取得して Google に送信します。
依存関係を設定する
これらの依存関係をビルドファイルに含めます。
Maven
<dependency>
<groupId>com.google.enterprise.cloudsearch</groupId>
<artifactId>google-cloudsearch-identity-connector-sdk</artifactId>
<version>v1-0.0.3</version>
</dependency>
Gradle
compile group: 'com.google.enterprise.cloudsearch',
name: 'google-cloudsearch-identity-connector-sdk',
version: 'v1-0.0.3'
コネクタ構成を作成する
すべてのコネクタは、リポジトリ ID などのパラメータに構成ファイルを使用します。パラメータを api.sourceId=1234567890abcdef などの Key-Value ペアとして定義します。
Google Cloud Search SDK には、すべてのコネクタ用の Google 提供のパラメータが含まれています。構成ファイルで次のことを宣言する必要があります。
- コンテンツ コネクタ:
api.sourceIdとapi.serviceAccountPrivateKeyFileを宣言します。これらは、リポジトリとアクセスに必要な秘密鍵を識別します。
- ID コネクタ: 外部 ID ソースを識別するために
api.identitySourceIdを宣言します。ユーザーの同期では、api.customerId(Google Workspace アカウントの固有 ID)も宣言します。
他の Google 提供パラメータは、デフォルト値をオーバーライドする場合にのみ宣言します。ID と鍵の生成について詳しくは、Google 提供のパラメータをご覧ください。
構成ファイルでリポジトリ固有のパラメータを定義することもできます。
構成ファイルをコネクタに渡す
構成ファイルを渡すように config システム プロパティを設定します。コネクタを起動するときに -D 引数を使用します。次に例を示します。
java -classpath myconnector.jar -Dconfig=MyConfig.properties MyConnector
この引数を省略すると、SDK はローカル ディレクトリ内の connector-config.properties という名前のファイルを使用しようとします。
テンプレート クラスを使用して完全同期 ID コネクタを作成する
SDK には、リポジトリのすべてのユーザーとグループを同期するための FullSyncIdentityConnector テンプレートが含まれています。このセクションでは、その使用方法について説明します。
このセクションでは、CSV ファイルから ID を読み取る IdentityConnectorSample.java サンプルのコードについて説明します。
コネクタのエントリ ポイントを実装する
エントリ ポイントは main() メソッドです。Application インスタンスを作成し、start() を呼び出してコネクタを実行します。
application.start() を呼び出す前に、IdentityApplication.Builder を使用して FullSyncIdentityConnector テンプレートをインスタンス化します。
SDK は、main() メソッドが Application.build() を呼び出した後に initConfig() を呼び出します。initConfig() メソッド:
Configurationが初期化されていないことを確認します。- Google 提供の Key-Value ペアで
Configurationオブジェクトを初期化します。
Repository インターフェースを実装する
Repository オブジェクトは、リポジトリ ID と Google ID を同期します。テンプレートを使用する場合は、一部のメソッドをオーバーライドするだけで済みます。FullSyncIdentityConnector の場合は、次のメソッドをオーバーライドします。
init(): セットアップと初期化用。listUsers(): すべてのユーザーを同期します。listGroups(): すべてのグループを同期します。- (省略可)
close(): シャットダウン時のクリーンアップ用。
カスタム構成パラメータを取得する
通常は init() メソッドで、Configuration オブジェクトからカスタム パラメータを取得します。次のスニペットは、CSV パスを取得する方法を示しています。
複数の値を含むパラメータを取得して解析するには、Configuration クラスのいずれかの型パーサーを使用してデータを個別のチャンクに解析します。次のコード スニペット(チュートリアル コネクタからの抜粋)は、getMultiValue メソッドを使用して GitHub リポジトリの名前のリストを取得しています。
すべてのユーザーのマッピングを取得する
listUsers() をオーバーライドして、ユーザー マッピングを取得します。このメソッドは、中断された場合に同期を再開するためのチェックポイントを受け入れます。ユーザーごとに次の手順を実施します。
- Google ID と外部 ID の間のマッピングを取得します。
- ペアを
listUsers()から返されるイテレータにパッケージ化します。
ユーザー マッピングを取得する
このスニペットは、CSV ファイルから ID マッピングを取得する方法を示しています。
イテレータにユーザー マッピングをパッケージ化する
listUsers() メソッドは、IdentityUser オブジェクトの CheckpointCloseableIterable を返します。
グループを取得する
listGroups() をオーバーライドして、グループとそのメンバーを取得します。このメソッドはチェックポイントを受け取って処理します。各グループに対して次の操作を行います。
- グループとそのメンバーを取得します。
- それらを
listGroups()から返されるイテレータにパッケージ化します。
グループ ID を取得する
次のスニペットは、CSV ファイルからグループとメンバーを取得する方法を示しています。
グループとメンバーをイテレータにパッケージ化する
listGroups() メソッドは、IdentityGroup オブジェクトの CheckpointCloseableIterable を返します。
次のステップ
- (省略可)リソースを解放する
close()を実装します。 - (省略可)コンテンツ コネクタを作成します。