2022年5月6日金曜日

Workspace ONEとOktaの連携 – OktaからWorkspace ONE AccessへIDプロビジョニング(SCIM Provisioning)

 前回の「Workspace ONEとOktaの連携 – はじめに」では、Workspace ONEとOktaの連携の概要についてご紹介しました。今回のブログから、具体的に設定内容を確認していきます。

今回は、Oktaで管理しているID情報をWorkspace ONE Accessへプロビジョニングします。SCIM を使ってIDプロビジョニングをするための設定についてご紹介します。


■環境イメージ

本ブログで設定する構成のイメージは以下です。(赤枠の部分です)



検証に使用した環境ですが、Workspace ONEはvExpertの特典で使用できるTestDriveのサンドボックス環境を使用します。

vExpertの特典以外にも、VMwareのパートナー企業であれば、指定のVTSPを取得すれば利用可能になります。エンドユーザーの場合はパートナー企業やVMware社員から招待があれば期間限定ですが利用可能になります。また、VMUG Advantage メンバーの方も使えるようです。

Getting Started with TestDrive


Oktaは、無償で30日間の評価が可能なトライアル環境をWEBから申請して使用しました。


事前にOktaにはテスト用のユーザーを10個ほど作成しています。


また、テスト用ユーザーが所属するグループも複数作成しています。


また、この設定を有効化するためには、Workspace ONE Accessに対してAPIでの操作が必要になるため、今回はPostmanを作業用のPCに事前インストールしています。



■設定作業の流れ

OktaからWorkspace ONE AccessへのSCIM Provisioning設定は、以下の流れで設定します。

  1. Workspace ONE AccessのAPIアクセストークンを生成
  2. Workspace ONE AccessでOtherタイプのディレクトリを作成
  3. OktaにWorkspace ONE Accessアプリを登録する
  4. Oktaのユーザー・グループがWorkspace ONE Accessに同期されることを確認

では順番に設定していきます。


■Workspace ONE AccessのAPIアクセストークンを生成

まず、Workspace ONE AccessでAPIアクセス用のクライアントを作成します。

Workspace ONE Accessの管理画面を開き、[設定]-[ OAuth 2.0 管理]を開き、[クライアントの追加]をクリックします。

※このブログを作成するときに、Workspace ONE AccessがClarity Designの新UIで表示できるようになっていたので、新しいUI表示で設定しています。旧UIだと、[カタログ]タブの矢印から[設定]-[リモートアプリアクセス]から開きます。


アクセスタイプの項目で、[サービスクライアントトークン]を指定し、ID欄に任意の値(今回は”OktaSCIM”)を入力します。アクセストークンの有効期間を必要に応じて変更し、[保存]をクリックします。
(有効期限を長くすると、OktaとのIDプロビジョニング連携構成の更新頻度が下がります)



クライアント情報が保存され、共有シークレットキーが作成されます。クライアントIDと共有シークレットの[コピー]をクリックして、キーをメモしておきます。




次に、Postmanを使用して、OAuthベアラートークンを生成します。

Postmanを開き、[Authorization]タブを開きます。 “Type”の選択で、[OAuth 2.0]をクリックします。



右側に表示された欄の” Configure New Token”の下部に以下値をそれぞれ入力します。入力後、[Request Token]をクリックしてトークンを要求します。

  • Token Name…Workspace ONE(任意の値)
  • Grant Type…Client Credentials
  • Access Token URL…以下記述

https://<Workspace ONE AccessのテナントURL>/SAAS/auth/oauthtoken
  • Client ID…先ほどWorkspace ONE Accessの管理画面で作成しコピーしたクライアントID
  • Client Secret…先ほどWorkspace ONE Accessの管理画面で作成しコピーしたシークレットキー
  • Scope…admin



アクセストークンの取得に成功すると、以下のような画面が表示され、トークンが表示されます。後ほどトークンを使う為、トークンの文字列をコピーしておきます。
[Use Token]をクリックして閉じます。



[Authorization]タブの”Add authorization data to”で[Request Headers]を選択しておきます。


■Workspace ONE AccessでOtherタイプのディレクトリを作成

次にAPIの操作で、Workspace ONE AccessにOtherタイプのディレクトリを作成します。

PostmanのURL欄に下記値を入力します。

  • HTTP方式…POST
  • URL…以下記述

https://<Workspace ONE AccessのテナントURL>/SAAS/jersey/manager/api/connectormanagement/directoryconfigs



[Headers]タブを開き、下記のキーと値を入力します。

  • Key…Content-Type
  • VALUE…以下の値

application/vnd.vmware.horizon.manager.connector.management.directory.other+json

次に、[Body]タブを開き、[raw]を選択して下記値を入力します。最後に、[Send]をクリックしてOtherタイプのディレクトリ作成を実行します。

{    
"type":"OTHER_DIRECTORY",    
"domains":["<ドメイン名>"],    
"name":"Okta Universal Directory"    
}


リクエストに成功すると、結果のBodyに以下の様なテキストが表示されます。



Workspace ONE Accessの管理画面を開き[コンポーネント]-[ディレクトリ]を確認すると、” Okta Universal Directory”という名前のディレクトリが追加されていることが確認できます。また、クリックして開くと、指定したドメインで構成されていることがわかります。


これで、Otherタイプのディレクトリ作成は完了です。


■OktaにWorkspace ONE Accessアプリを登録する

次に、Okta側にWorkspace ONE Accessアプリを登録します。

Oktaの管理コンソールを開き[Applications]-[Applications]の順に開き、[Browse App Catalog]をクリックします。



検索窓に”VMware Workspace ONE”と入力し、検索結果の[VMware Workspace ONE]を選択します。[Add] をクリックします。



Workspace ONE Accessの設定を追加していきます。

“Base URL”にWorkspace ONE AccessのテナントURLを入力します。[Done]をクリックします。


[Provisioning]タブをクリックし、[Configure API Integration]をクリックします。


[Enable API integration]を有効にし、”API Token”欄にPostmanで作成したアクセストークンの値を貼り付けます。

[Test API Credentials ]をクリックし、接続が問題ないことを確認します。問題なければ[Save]をクリックして保存します。


次に、IDプロビジョニング、変更の動作を指定します。

[To App]の[Edit]をクリックし、” Create Users(ユーザーの作成)”” Update User Attributes(属性の更新)”” Deactivate Users(非アクティブ化)”をそれぞれ有効化し、[Save]をクリックします。


プロビジョニングの設定画面を下部にスクロールし、マッピングする属性情報を指定します。適宜、編集ボタンをクリックして変更します。

環境に合わせて設定する必要がありますが、少なくとも”domain”属性はデフォルトで”okta.com”になっているため、Workspace ONE Accessに作成したOtherタイプのディレクトリのドメインの一致させる必要があります。



以上で、OktaへのWorkspace ONE Accessアプリ登録設定は完了です。



■Oktaのユーザー・グループがWorkspace ONE Accessに同期されることを確認

Oktaの管理コンソールからユーザーにWorkspace ONEアプリを割り当て、Workspace ONE AccessへIDがプロビジョニングされることを確認します。

Oktaの管理コンソールを開き、VMware Workspace ONEアプリの[Assignments]を開きます。[Assign]をクリックし、IDをプロビジョニングしたいすべてのユーザーが含まれているグループを追加します。


Workspace ONE Accessの管理コンソールを開き、[アカウント]タブを開くと、ユーザーが追加されていることが確認できました。



次に、Oktaで作成・管理しているグループをWorkspace ONE Accessへ同期します。

Oktaの管理コンソールを開き、VMware Workspace ONEアプリの[Push Groups]を開きます。同期したいグループを選択、追加します。


しばらくしてWorkspace ONE Accessの管理コンソールを開き、[アカウント]-[ユーザーグループ]を開くと、グループが追加されていることが確認できました。また、各グループのユーザー所属情報は、Okta側で構成している情報と同じ状態になっています。



また、試しにOkta側でユーザーを無効にした場合の動作も確認しました。Okta側で無効にすると、すぐにWorkspace ONE Access側のユーザー状態も無効状態になることが確認できました。

以上のように、Oktaのユーザー・グループがWorkspace ONE Accessに同期されることを確認できました。


■おわりに

今回の記事では、OktaからWorkspace ONE AccessへのIDプロビジョニングの設定をご紹介しました。Workspace ONE AccessのGUI操作で設定できない項目があるため、Postmanを使ってのAPI操作が必要になるのがちょっと躓きポイントかと思いました。

次回は、このWorkspace ONE Accessに同期されたユーザーを、Workspace ONE UEMに同期する際の設定手順を確認したいと思います。


<参考ドキュメント>

SCIM Provisioning from Okta to VMware Workspace ONE Access