オンプレミスプロビジョニングのSCIMコネクターを作成する
Okta Provisioning Agentは、企業ファイアウォールの内側にインストールされたオンプレミスアプリにOktaからユーザーをプロビジョニングしたり、企業アプリからOkta orgにユーザーをインポートしたりすることができます。Oktaとオンプレミスアプリの間の通信は、Okta Provisioning AgentとSystem for Cross-domain Identity Management(SCIM)サーバーを介して、またはProvisioning Connector SDKを使って構築されたプロビジョニングコネクターを介して行われます。
Oktaとオンプレミスアプリの接続には、SCIMプロトコルが使用されます。コネクターを構築して使用する上で、SCIMに関する特別な知識は必要ありません。SCIMの詳細については、「SCIM 2.0および1.1の仕様」を参照してください。
Okta Provisioning Agentは、SCIM 2.0を使ってエンタイトルメントの検出やユーザーの作成/読み取り/更新/削除、ライフサイクル管理などのプロビジョニング機能をサポートします。プッシュグループには対応していません。
コネクターはOkta Provisioning AgentからSCIMメッセージを受け取り、オンプレミスアプリのAPIインターフェイスを使ってそのアプリと統合します。必要な作業は、オンプレミスアプリの仕様を定義したJavaコードの作成だけです。必要に応じて複数のコネクターを作成し、異なるオンプレミスアプリに接続性を提供することができます。
はじめに
SDKを使用してコネクターを作成するには、以下が必要です。
- SDKパッケージ。これをOktaからダウンロードするには、管理者としてサインインし、 に進みます。Okta Provisioning Connector SDKの横にある[Download Latest(最新をダウンロード)]をクリックします。
- Javaの最小バージョン:1.6または1.7
- コネクターをWARファイルとして実行するためのWebサーバー
- EclipseやIntelliJなどのIDE(推奨)
以下の例では、Mavenを使用してサンプルコネクターを構築します。
SDKパッケージの内容
SDKパッケージは圧縮ファイルです。次の表は、圧縮ファイルの内容を説明しています。
ファイル | 説明 |
README.TXT | SDKパッケージの内容を説明します。 |
LICENSE.TXT | 参照するライブラリのすべてのライセンス。 |
Doc | Okta Provisioning Agent SDKのJavadocドキュメント。 |
lib/scim-server-sdk-*.jar | SCIMサーバーConnector SDKライブラリ。使い方はexample-serverを参照してください。 |
example-server | Connector SDKを使用したSCIMサーバーの実装例。詳しくは、README.TXTを参照してください。 |
tester | Oktaコネクターテスター。Oktaのプロビジョニングコマンドを模倣したスタンドアロンのコンソールアプリです。SCIMサーバーとコネクターの実装を切り離してテストできます。詳しくは、README.TXTを参照してください。 |
コネクターの作成
オンプレミスアプリとOktaを統合するために、プロビジョニングコネクターSDKを使ってコネクターを作成することができます。コネクターはSCIMServiceインターフェイスを実装しています。
手順1:SCIMServiceの実装
SCIMServiceインターフェイスを実装したJavaコネクターを作成します。SDKのJavadocはdocディレクトリにあります。
選択されたメソッド
次の表は、実装可能な一部のSCIMServiceメソッドを示しています。実装するメソッドは、オンプレミスアプリがサポートする機能に基づいて決定できます。
メソッド |
説明 |
---|---|
UserManagementCapabilities[ ] getImplementedUserManagementCapabilities() | このメソッドは、コネクターに実装されているユーザー管理(プロビジョニング)機能を返します。 このメソッドは、コネクターが実装されていることをOktaのプロビジョニング機能に通知するものであるため必須です。 |
SCIMUser createUser(SCIMUser user) | このメソッドは、Oktaがオンプレミスアプリでユーザーを作成する命令を送信する際に呼び出されます。 |
SCIMUser updateUser(String externalId, SCIMUser user) | このメソッドは、Oktaがオンプレミスアプリで既存のユーザーを更新する命令を送信する際に呼び出されます。 |
SCIMUser getUser(String externalId) | このメソッドは、Oktaがオンプレミスアプリから特定のユーザーを取得する命令を送信する際に呼び出されます。 |
SCIMUserQueryResponse getUsers(PaginationProperties pageProperties, SCIMFilter filter) | このメソッドは、Oktaがオンプレミスアプリからユーザーのセットを取得する命令を送信する際に呼び出されます。 |
SCIMGroup createGroup(SCIMGroup group) | このメソッドは、Oktaがオンプレミスアプリでグループを作成する命令を送信する際に呼び出されます。 |
SCIMGroup updateGroup(String externalId, SCIMGroup group) | このメソッドは、Oktaがオンプレミスアプリでグループを更新する命令を送信する際に呼び出されます。 |
SCIMGroupQueryResponse getGroups(PaginationProperties pageProperties) | このメソッドは、Oktaがオンプレミスアプリからすべてのグループを取得する命令を送信する際に呼び出されます。 |
void deleteGroup(String externalId) | このメソッドは、Oktaがオンプレミスアプリで特定のグループを削除する命令を送信する際に呼び出されます。 |
機能マッピング
コネクターとSCIMServiceインターフェイスを作成する際に、コネクターに実装したUserManagementCapabilitiesはどれかをOktaに伝えます。これにより、Oktaで作成したアプリ統合で使用できるプロビジョニング機能が決定されます。アプリの統合を設定する方法の詳細については、「オンプレミスプロビジョニングを展開するための一般的なワークフロー」を参照してください。
次の表は、Oktaのアプリ統合で設定できるプロビジョニング機能と、それを可能にするSCIMServiceコネクターのメソッドをマッピングしたものです。これらは、コードで設定できるUserManagementCapabilitiesです。これらはOktaでアプリインスタンスを表示するときに表示されません。
プロビジョニング機能 | SCIMServiceメソッド |
PUSH_NEW_USERS | createUser |
getUsers | |
PUSH_PASSWORD_UPDATES | updateUser |
PUSH_PENDING_USERS | createUser |
updateUser | |
getUsers | |
PUSH_PROFILE_UPDATES | updateUser |
PUSH_USER_DEACTIVATION | updateUser |
REACTIVATE_USERS | updateUser |
IMPORT_NEW_USERS
OPP_SCIM_INCREMENTAL_IMPORTS* |
getUsers |
getGroups | |
IMPORT_PROFILE_UPDATES | getUser |
GROUP_PUSH | deleteGroup |
updateGroup | |
createGroup | |
getGroup |
*SCIMコネクターがmeta.lastModified属性のgt属性演算子によるフィルタリングをサポートしている場合は、OPP_SCIM_INCREMENTAL_IMPORTSを有効にしてください。
手順2:コネクターの構築
Mavenを使用してコネクターを構築します。「サンプルコネクター」セクションの説明を参照してください。
手順3:コネクターのデプロイ
コネクターをWARファイルとしてWebサーバーにデプロイします。
手順4:コネクターのテスト
testerディレクトリにあるOktaコネクターテスターツールを使用して、コネクターをテストします。
手順5:Oktaでコネクターをテスト
「オンプレミスプロビジョニングのSCIMコネクターをテストする」を参照してください。
サンプルコネクター
SDKパッケージには、example-serverというサンプルコネクターが含まれています。これはインメモリのデータストアを使用するシンプルなコネクターです。また、ファイルベースのデータストアを使用することもできます。このサンプルコネクターは、オンプレミスプロビジョニングと統合し、Oktaからのプロビジョニング指示に応答します。
example-serverの構築
パッケージには、ユーザーとグループがインメモリIDストアに保存される、実用的なコネクターを作成するサンプルコードが含まれています。完成したコネクターは、1つの.warファイルで構成されます。
以下の手順でexample-serverを構築します。
- SDKパッケージから/lib/scim-server-sdk-<version>.jarを見つけます。
- 以下のMavenコマンドでローカルにインストールします。
mvn install:install-file -Dfile=<PATH TO THE JAR> -DgroupId=com.okta.scim.sdk -DartifactId=scim-server-sdk -Dpackaging=jar -Dversion=ab.cd.ef。ここで、ab.cd.efはSDKのバージョン番号です。正しいバージョン番号を含むパッケージの完全なビルド手順については、/libフォルダ内のinstall.batおよびinstall.shファイルを参照してください。
-
コネクターを構築します。
mvn package
- target/scim-server-example-*.warファイルをTomcatのディレクトリにコピーして実行します。
これで、Oktaコネクターテスターユーティリティを使用して、コネクターをテストすることができます。テスト後にコネクターをOktaと統合するには、「手順3:コネクターのデプロイ」を参照してください。
コネクターのテスト
SDKには、SCIMコネクターをテストするためのOktaコネクターテスターユーティリティが含まれています。これは、OktaとOkta Provisioning Agentに接続することなく、OktaプロビジョニングコネクターSDKを使用して構築されたSCIMコネクターまたはカスタムSCIMコネクター/サーバーをテストできます。
「オンプレミスプロビジョニングのSCIMコネクターをテストする」を参照してください。
コネクターのデプロイ
コネクターを作成し、Tomcatのwebappsディレクトリに.warファイルをコピーした後、「SCIMコネクターに接続する」を参照して新しいコネクターを統合します。この手順では、エージェントと、SDKを使用して作成したSCIMサーバーを、httpsを介して統合します。プロセスを完了するには、「SSLを有効にする」を参照してください。
「HTTPを許可する」で説明されているように、エージェントとSCIMサーバーの間でhttp通信を使用できる場合でも、推奨されるプロトコルはhttpsです。
HTTPを許可する
HTTPの使用は推奨されません。より安全なオプションであるHTTPSを使用することを強く推奨します。
- configure_agent.shを編集します。
- 「echo "Configuring Okta Provisioning agent"」を含む行を見つけます。
- その後の行はプロビジョニングエージェントを登録します。HTTPを有効にするには、コマンドライン引数のリストに「-allowHttp true」を追加します。必要に応じて行継続文字(\)を挿入してこの引数を含めます。
SSLを有効にする
https接続でSSLをサポートするには、以下の手順を実行します。
- SCIMサーバーの鍵を生成し、証明書をエクスポートする。
- 証明書をOkta Provisioning Agentの信頼ストアにインポートする
次の5つの手順を実行して、自己署名証明書を使ったSSLを有効にします。セキュリティを向上させ、信頼できるサードパーティによって署名された証明書を使用するには、手順5で、そのタイプの証明書をOkta Provisioning Agentの信頼ストアにインポートします。
手順1:キーを生成する
TomcatサーバーがlocalhostのURLでアクセスされる場合は、次のコマンドを使用してキーを生成します。
keytool -genkey -alias scim_tom -keyalg RSA -keystore /root/scim_tomcat_keystore キーストアのパスワードを入力します: 新しいパスワードを再入力します: あなたの姓と名を教えてください[Unknown]: localhost組織単位の名前は何ですか?[Unknown]: ITOrganizationの名前は何ですか?[Unknown]:MyCompany お住まいの都市や地域の名前は何ですか?[Unknown]: sf 国や州の名前は何ですか?[Unknown]: ca 2文字の国コードは何ですか?[Unknown]: us Is CN=K0208, OU=eng, O=okta, L=sf, ST=ca, C=us correct? [no]: yes <scim_tom>のキーパスワードを入力します (キーストアのパスワードと同じ場合はRETURN):
TomcatサーバーがIP(https://10.11.12.13:8443/など)でアクセスされる場合は、Java 7以上のキーツールを使用して次のコマンドを実行します。
$JAVA_HOME/bin/keytool -genkey -alias scim_tom -ext san=ip:10.11.12.13 -keyalg RSA -keystore /root/scim_tomcat_keystore
このコマンドは、Java 7インストール以上から実行する必要があります。Javaの環境変数がJAVA_HOMEでなく、JAVA_7_HOMEなどである場合は、前のコマンドでJAVA_HOMEの代わりにその環境変数を使用します。
手順2:TomcatにHTTPSで接続できるようにSSLを有効化する
SSLを有効化するHTTPSコネクターを構成します。Tomcat構成ファイルを編集します。このファイルは、通常は$CATALINA_HOME/conf/server.xmlにあります。次の構成では、SSLを有効化してHTTPSポートを8443に設定し、前の手順で作成したキーストア(/root/scim_tomcat_keystore)を使用するようにTomcatに指示しています。
<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true"
maxThreads="150" scheme="https" secure="true"
clientAuth="false" sslProtocol="TLS"
keystoreFile="/root/scim_tomcat_keystore"
keystorePass="changeit" />
手順3: Tomcatを起動し、httpsでサーバーに接続できることを確認する
使用しているTomcatバージョンとオペレーティングシステムの指示に従ってTomcatを起動します。たとえば、Linuxの場合は、$CATALINA_HOME/binに移動し、./catalina.sh startを実行してTomcatを起動します。
ブラウザータブを開き、サーバーアドレス(localhostなど)を入力します。Tomcatが実行されている場合は、Webページが表示されます。
手順4:パブリック証明書をエクスポートする
keytool -export -keystore /root/scim_tomcat_keystore -alias scim_tom -file /root/scim_tomcat.cert キーストアのパスワードを入力します: ファイル</root/scim_tomcat.cert>に保存された証明書
手順5:この証明書をOkta Provisioning Agentの信頼ストアにインポートする
証明書をTomcatにインポートして、TomcatとSCIMサーバー間でセキュアな接続を確立できるようにします。Okta Provisioning Agentがインストールされているマシンで次のコマンドを実行します。
/opt/OktaProvisioningAgent/jre/bin/keytool -import -file /root/scim_tomcat.cert -alias scim_tom -keystore /opt/OktaProvisioningAgent/jre/lib/security/cacerts次の手順
オンプレミスプロビジョニングのSCIMコネクターをテストする