オンプレミスプロビジョニングのSCIMコネクターを作成する
Okta Provisioning Agentは、企業のファイアウォールの背後にインストールされているオンプレミスアプリケーションにOktaからユーザーをプロビジョニングしたり、企業のアプリケーションからOkta orgにユーザーをインポートしたりすることができます。Oktaとオンプレミスアプリケーションの間の通信は、Okta Provisioning AgentとSystem for Cross-domain Identity Management(SCIM)サーバー、またはProvisioning Connector SDKを使用して構築されたプロビジョニングコネクターを介して行われます。
SCIMはOktaとオンプレミスアプリケーションを接続するために使用されます。コネクターを構築して使用するうえで、SCIMに関する特別な知識は必要ありません。SCIMの詳細については、本仕様書を参照してください。
コネクターはOkta Provisioning AgentからSCIMメッセージを受け取り、アプリケーションが提供するAPIインターフェイスを使用して、そのオンプレミスアプリケーションと統合します。必要な作業は、オンプレミスアプリケーションの仕様を定義したJavaコードの作成だけです。必要に応じて複数のコネクターを作成し、異なるオンプレミスアプリケーションに接続性を提供することができます。
開始する前に
SDKを使用してコネクターを作成するには、以下が必要です。
- SDKパッケージ。これはOktaの[Downloads(ダウンロード)]ページから入手できます。パッケージを入手するには、Oktaの管理者としてサインインし、[Settings(設定)]>[Downloads(ダウンロード)]に進みます。[Admin Downloads(管理者用ダウンロード)]セクションのOkta Provisioning Connector SDKの横にある[Download(ダウンロード)]をクリックします。
- Java最小バージョン:1.6または1.7
- コネクターをWARファイルとして実行するためのWebサーバー
- EclipseやIntelliJなどのIDE(推奨)
注:この例ではSDKの構築にMavenを使用しています。
SDKパッケージの内容
SDKパッケージは圧縮ファイルです。圧縮ファイルの内容を以下の表に示します。
ファイル | 説明 |
README.TXT | パッケージの内容の説明。この表と同じ情報が含まれています。 |
LICENSE.TXT | 参照するライブラリのすべてのライセンス。 |
lib/scim-server-sdk-*.jar | SCIMサーバーConnector SDKライブラリ。使い方はexample-serverを参照してください。 |
example-server | Connector SDKを使用したSCIMサーバーの実装例。詳しくは、README.TXTを参照してください。 |
tester | Oktaのプロビジョニングコマンドを模倣したスタンドアロンのコンソールアプリケーションで、SCIMサーバーとコネクターの実装を切り離してテストすることができます。詳しくは、README.TXTを参照してください。 |
コネクターの作成
オンプレミスアプリケーションとOktaを統合するために、コネクターSDKを使ってコネクターを作成することができます。コネクターはSCIMServiceインターフェイスを実装しています。
手順1:SDKを使用したSCIMServerインターフェイスの実装
SCIMServiceインターフェイスを実装したJavaコネクターを作成します。これらのメソッドの詳細は、Javadocに記載されています。
選択されたメソッド
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の[App Instance(アプリインスタンス)]ページには表示されません。
プロビジョニング機能 | SCIMServiceメソッド |
PUSH_NEW_USER | 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:コネクターのテスト
Oktaコネクターテスターツールを使用して、コネクターをテストします。
手順5:Oktaでコネクターをテスト
「オンプレミスプロビジョニングのSCIMコネクターをテストする」を参照。
サンプルコネクター
SDKパッケージには、2つのサンプルコネクターが含まれています。
example-server
example-serverは、インメモリのデータストアを使用するシンプルなコネクターです。また、ファイルベースのデータストアを使用することもできます。このサンプルコネクターは、オンプレミスプロビジョニングと統合し、Oktaからのプロビジョニング指示に応答します。
example-serverの構築
パッケージには、ユーザーとグループがインメモリIDストアに保存される、実用的なコネクターを作成するサンプルコードが含まれています。完成したコネクターは、1つの.warファイルで構成されます。
以下の手順でexample-serverを構築します。
- SDKのルートディレクトリから、/lib/scim-server-sdkのjarファイルを見つけます。
- 以下のMavenコマンドでローカルにインストールします。
-
コネクターを構築します。
mvn package
- target/scim-server-example-*.warファイルをTomcatのディレクトリにコピーして実行します。
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ファイルを参照してください。
これで、Oktaコネクターテスターユーティリティを使用して、コネクターをテストすることができます。テスト後にコネクターをOktaと統合するには、「手順3:コネクターのデプロイ」を参照してください。
コネクターのテスト
Oktaでは、OktaとOkta Provisioning Agentに接続することなく、OktaコネクターSDKまたはカスタムSCIMコネクター/サーバーを使用して構築されたSCIMコネクターをテストするためのOktaコネクターテスターユーティリティを提供しています。
「オンプレミスプロビジョニングのSCIMコネクターをテストする」を参照。
コネクターのデプロイ
コネクターを作成し、Tomcatのwebappsディレクトリに.warファイルをコピーした後、「SCIMコネクターに接続する」を参照して新しいコネクターを統合します。「コネクターの作成」セクションに記載されている5つの手順では、エージェントと、SDKで作成したSCIMサーバーとの間で、httpsを使用した統合を行います。プロセスを完了するには、「SSLを有効にする」を参照してください。
httpの使用で説明されているように、エージェントとSCIMサーバーの間でhttp通信を使用できる場合でも、推奨されるプロトコルはhttpsです。
httpの使用
httpの使用は推奨されません。Oktaでは、より安全なオプションとしてhttpsを強く推奨します。
- configure_agent.shファイルから「Okta Provisioning Agentの構成」を検索します。
- コマンドライン引数「-allowHttp true \」を追加します。
SSLの有効化
https接続でSSLをサポートするには、以下の2つの手順が必要です。
- SCIMサーバーの鍵を生成し、証明書をエクスポートする。
- 手順1でエクスポートした証明書をOkta Provisioning Agentの信頼ストアにインポートする。
SSLの有効化に関する以下の詳細な説明は、example-server/README.txtファイルにも記載されています。
5つの手順に従って、自己署名証明書を使ったSSLを有効にすることができます。セキュリティを向上させ、信頼できるサードパーティによって署名された証明書を使用するには、手順5で、そのタイプの証明書をOkta Provisioning Agentの信頼ストアにインポートします。
手順1:キーの生成
keytool -genkey -alias scim_tom -keyalg RSA -keystore /root/scim_tomcat_keystore キーストアのパスワードを入力します: 新しいパスワードを再入力します: あなたの姓と名を教えてください[Unknown]: localhost 所属組織単位の名前は何ですか?[Unknown]: IT 所属組織の名前は何ですか?[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サーバーがlocalhostのURLでアクセスされている場合、最初の質問「あなたの姓と名を教えてください」の答えはlocalhostになるはずです。
Tomcat Serverがhttps://10.11.12.13:8443/などのIP経由でアクセスされている場合は、上記のコマンドではなく、以下のコマンドを実行して鍵を生成してください。以下のコマンドはJava 7をインストールした状態で実行する必要があります。SubjectAltNamesにIPを指定するオプション-ext sanは、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_HOMEではない場合は、$JAVA_7_HOMEなどのように正しい変数に置き換えてください。
手順2:$TOMCAT_HOME/conf/server.xmlにアクセスし、SSLを有効化する
以下の構成を使用して、上記のコマンドから生成されたキーストア/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でサーバーに接続できることを確認する
手順4:手順1で生成したキーストアから公開証明書をエクスポートする
keytool -export -keystore /root/scim_tomcat_keystore -alias scim_tom -file /root/scim_tomcat.cert キーストアのパスワードを入力します: ファイル</root/scim_tomcat.cert>に保存された証明書
手順5:この証明書をOkta Provisioning Agentの信頼ストアにインポートする
証明書をインポートして、Tomcatサーバーを信頼できるようにし、接続が安全になるようにします。このコマンドは、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コネクターをテストする