オンプレミスプロビジョニングのSCIMコネクターを作成する

Okta Provisioning Agentは、企業のファイアウォールの背後にインストールされているオンプレミス アプリケーションにOktaからユーザーをプロビジョニングしたり、企業のアプリケーションからOkta orgにユーザーをインポートしたりすることができます。Oktaとオンプレミス アプリケーションの間の通信は、Okta Provisioning Agentとクロスドメインアイデンティティ管理システム(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 Agent SDK の横にある[Download(ダウンロード)]をクリックします。
  • Java最小バージョン:1.6または1.7
  • コネクターをWARファイルとして実行するためのWebサーバー
  • EclipseやIntelliJなどのIDE(推奨)

: この例ではSDKの構築にMavenを使用しています。

SDK パッケージの内容

SDKパッケージは圧縮ファイルです。圧縮ファイルの内容を以下の表に示します。

ファイル説明
README.TXTパッケージの内容の説明。この表と同じ情報が含まれています。
LICENSE.TXT参照するライブラリのすべてのライセンス。
lib/scim-server-sdk-*.jarSCIMサーバーConnector SDKライブラリ。使い方はexample-serverを参照してください。
example-serverConnector SDKを使用したSCIMサーバーの実装例。詳しくは、README.TXTを参照してください。
テスター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_USERcreateUser
getUsers
PUSH_PASSWORD_UPDATESupdateUser
PUSH_PENDING_USERScreateUser
updateUser
getUsers
PUSH_PROFILE_UPDATESupdateUser
PUSH_USER_DEACTIVATIONupdateUser
REACTIVATE_USERSupdateUser

IMPORT_NEW_USERS

OPP_SCIM_INCREMENTAL_IMPORTS*

getUsers
getGroups
IMPORT_PROFILE_UPDATESgetUser
GROUP_PUSH deleteGroup
updateGroup
createGroup
getGroup

*SCIMコネクターがmeta.lastModified属性の "gt "属性演算子によるフィルタリングをサポートしている場合は、OPP_SCIM_INCREMENTAL_IMPORTSを有効にしてください。

ステップ2: コネクターを構築する

Mavenを使用してコネクターをビルドします。以下の「コネクターの例」セクションの手順を参照してください。

ステップ3:コネクターをデプロイする

コネクターをwarファイルとしてWebサーバーにデプロイします。

ステップ4:コネクターをテストする

Okta Connector Testerツールを使用してコネクターをテストします。

ステップ5:Oktaでコネクターをテストする

オンプレミスプロビジョニングのSCIMコネクターをテストする を参照してください。

コネクターの例

SDKパッケージの一部として2つのコネクターの例が提供されています。

example-server

example-serverは、インメモリのデータストアを使用するシンプルなコネクターです。また、ファイルベースのデータストアを使用することもできます。このサンプルコネクターは、オンプレミス プロビジョニングと統合し、Oktaからのプロビジョニング指示に応答します。

example-serverの構築

パッケージには、ユーザーとグループがインメモリIDストアに保存される、実用的なコネクターを作成するサンプルコードが含まれています。完成したコネクターは、1つの.warファイルで構成されます。

以下の手順でexample-serverを構築します。

  1. SDKのルートディレクトリから、/lib/scim-server-sdkのjarファイルを見つけます。
  2. 以下のMavenコマンドでローカルにインストールします。
  3. mvn install:install-file -Dfile=<PATH TO THE JAR> -DgroupId=com.okta.scim.sdk -DartifactId=scim-server-sdk -Dpackaging=jar -Dversion=01.00.xx

    これはSDKのバージョン番号です。このコマンドと正しいバージョン番号を含む完全なビルド手順については、/libフォルダ内のinstall.batおよびinstall.shファイルを参照してください。

  4. 以下のコマンドで、例を作成します。

    mvn package

  5. target/scim-server-example-*.warファイルをTomcatのディレクトリにコピーして実行します。

これで、Okta コネクターテスター ユーティリティを使用して、コネクターをテストすることができます。テスト後にコネクターをOktaと統合するには、 を参照してください。

コネクターのテスト

Oktaでは、OktaとOkta Provisioning Agentに接続することなく、OktaコネクターSDKまたはカスタムSCIMコネクター/サーバーを使用して構築されたSCIMコネクターをテストするためのOkta コネクターテスターユーティリティを提供しています。

オンプレミスプロビジョニングのSCIMコネクターをテストする を参照してください。

コネクターのデプロイ

コネクターを作成し、Tomcat の webapps ディレクトリに .war ファイルをコピーした後、 SCIM コネクターへの接続を参照して新しいコネクターを統合します。「コネクターの作成」セクションに記載されている5つの手順では、エージェントと、SDKで作成したSCIMサーバーとの間で、httpsを使用した統合を行います。プロセスを完了するには、 を参照してください。

エージェントとSCIMサーバー間のhttp通信については、下記の「httpの使用」を参照してください。なお、プロトコルはhttpsを推奨しています。

httpの使用

この方法を選択する前に、httpの使用は推奨されていないことに注意してください。Oktaでは、より安全なオプションとしてhttpsを強く推奨します。

  1. configure_agent.shファイルから「Okta Provisioning Agentの構成」を検索します。
  2. コマンドライン引数「-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

CN=K0208, OU=eng, O=okta, L=sf, ST=ca, C=us で間違いありませんか?

[no]: yes

Enter キーのパスワード <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コネクターをテストする

関連項目

SDKを使ってオンプレミス プロビジョニングのSCIM コネクターを作成する

オンプレミスプロビジョニング用のSCIMメッセージ