今回はWorkspace ONE Accessのディレクトリ同期をAPIで実行してみます。
WS1 Accessに連携したディレクトリはビルトインの機能で定期的に自動同期させるように設定することができます。例えば1日に一回などといった形です。
ただ、自動同期は最短で1時間に1回なので、AD側での情報更新後即時にWS1 Accessにも変更を反映したい場合は手動で同期を実行する必要があり、Omnissa Communityでもそういうことをやりたいといった質問があったため、今回APIで同期を実行する方法を検証してみました。
WS1 Accessで利用できるAPIは以下のURLに明記されています。
今回実施するAD連携設定の変更は上記のURLには記載が無さそうので、実施は自己責任です。
大まかな流れは以下の通りです。
1.WS1 Access管理コンソールを操作してAPIの情報を収集
2.Postmanの設定
3.動作確認
1.WS1 Access管理コンソールを操作してAPIの情報を収集
WebブラウザでWorkspace ONE Accessの管理コンソールにログインし、[統合]>[ディレクトリ] をクリック後、同期を実施したい対象のディレクトリ名のリンクをクリックします。
次に、裏で動いているAPI情報を取得するためにブラウザのデベロッパーツールを開きます。Chromeの場合、[右上のオプション]>[その他のツール]>[デベロッパーツール]をクリックします。
デベロッパーツールの[Application]タブを開き、左の[Cookies]を展開し、URLをクリックすると使用されているCookieを確認することができます。
Name列が[HZN]のレコードをクリックし、[Cookie Value]の値を控えておきます。
これは後程PostmanからAPIを実行する際の認証情報として使用します。
次の手順でAccessの管理コンソール上で手動でAD同期を実行するのですが、その時に裏で動くAPIの情報をキャプチャするため、デベロッパーツールの[Network]タブを開いておきます。
Accessのコンソールに戻り、[同期]>[セーフガードを使用しない同期]をクリックします。
デベロッパーツールのNetworkタブで[Name]が[v2?locale=ja]のレコードをクリックすると、ディレクトリ同期実行時に実行されたAPIを確認することができます。
PostmanでのAPI実行に使うため、[Request URL:]の値をコピーしておきます。
また、[Request Method:]がPOSTであることも覚えておきます。
API実行時のパラメータとして必要になるため、[Accept:]の値もコピーしておきます。
application/vnd.vmware.horizon.manager.connector.management.directory.sync.trigger.v2+json
同期実行のAPIのURLはディレクトリIDを含んでいるため、別のディレクトリに対して同期を実行したい場合は別途取得が必要になりますが、管理コンソールでディレクトリ詳細画面を開き、URLを見ることで簡単に取得することができます。
2.Postmanの設定
Postmanを起動して新しいクエリを作成後、URL欄に以下を設定します。
-URL:前の手順で取得したRequest URLの値
-Method:POST
次に認証情報を設定します。Postmanの「Authorization」タブで以下のように設定します。
-Type:Bearer Token
-Token:Cookieから取得したHZNの値(画像内で言うと「eyJ0…」という文字列)
【補足】
今回はワンタイムの実行なので手軽に実行するためブラウザのCookieから認証情報を取得しましたが、ちゃんとやるならOAuthを利用したほうがいいですね。詳しくは以下を参照。
次に「Headers」タブをクリック後、以下を設定します。
-Accept:1.の手順で取得したAcceptの値
[Body]タブにて[raw]にチェック入れ、入力欄には以下を入力します。
{"ignoreSafeguards":true}
【補足】
これは「セーフガードを無視するか否か」という設定なので、[true]であればセーフガードを無視して同期、[false]を指定するとセーフガードを有効化した同期が実行されます。
trueにしろfalseにしろ、どちらか設定しないと同期は実行できません。
3.動作確認
対象ディレクトリの「ログの同期」タブを開くと、同期実行のログを見ることができます。APIでの同期実行の事前確認として、直近の同期のタイムスタンプを見ておきます。
前章まででPostmanの設定は整っているので、「Send」をクリックしていざAD同期のAPIを実行します。
実行後、結果が[200 OK]であることを確認します。
新しい同期ログが表示されたので無事同期は完了したようです。特にGUIで実行した場合や自動同期で実行された場合とログの見え方的には変わりは無いようです。
今回はPostmanによるAPI実行方法を紹介しました。
この処理を何らかの形で自動化したり、スクリプト化したりすることで、Accessの機能としての自動同期以外の任意のタイミングでディレクトリ同期を実行させることが可能になるかと思います。
コメント
コメントを投稿