オンプレミスプロビジョニングの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 |
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を見つけます。 /libディレクトリに移動し、オペレーティングシステムのインストールスクリプトを実行します。- Windows:
install.batを実行します - Linux:
install.shを実行します
- Windows:
-
コネクターを構築します。
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
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: localhost
What is the name of your organizational unit?
[Unknown]: IT
What is the name of your organization?
[Unknown]:MyCompany
What is the name of your City or Locality?
[Unknown]: sf
What is the name of your State or Province?
[Unknown]: ca
What is the two-letter country code for this unit?
[Unknown]: us
Is CN=K0208, OU=eng, O=okta, L=sf, ST=ca, C=us correct?
[no]: yes
Enter key password for <scim_tom>
(RETURN if same as keystore password):
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
Enter keystore password:
Certificate stored in file </root/scim_tomcat.cert>
キーストアのパスワードを求められたときは、デフォルトのJavaパスワード(changeit)を使用します。システム管理者がキーストアのパスワードを更新した場合は、IT部門に問い合わせてください。
手順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コネクターをテストする
関連項目