OpenIDMでユーザ単位に連携先の更新完了時点で何か処理を行いたい場合
OpenIDMからユーザ情報を同期する場合、標準機能としてReconciliation、またはAutomatic syncという機能が用意されています。*1
それぞれの特徴を簡単に説明すると、以下の通りとなります。
Reconciliation:
- sourceオブジェクト *2とtargetオブジェクト *3を全て比較し、棚卸結果を連携先にプロビジョニングする。
Automatic sync:
- OpenIDMに保存されたユーザ情報が更新されたタイミングで、自動的に更新内容を連携先にプロビジョニングする。
今回は上記それぞれの同期機能で、個別のユーザ情報が更新されたタイミングで何か処理を行いたい場合の対応方法について書いてみます。
sync.jsonのpolicyオブジェクトに postAction の設定を追加します。
postActionの設定を行うと、ユーザ毎にactionで指定された同期処理が実行され終えた時点でpostActionの処理が実行されることになります。
{ "situation" : string, "action" : string or script object "postAction" : optional, script object }
scriptオブジェクトとは、以下のような形式で設定を行うことを表します。
ここでは例としてfileを指定していますが、sourceを指定すればインラインで何か処理を行うことも可能です。
"postAction" : { "type" : "text/javascript", "file" : "script/postCreate.js" }
例えば連携先へのユーザ作成完了時に何か処理を行いたい場合は、以下のように設定を行います。
situationは適宜読み替えてください。
{ "situation" : "ABSENT", "action" : "CREATE" "postAction" : { "type" : "text/javascript", "source" : "logger.info("Created success.")" } }
上記設定を行いOpenIDMに設定が正しく読み込まれると、Reconciliation、またはREST APIなどから設定を行ったマッピングに紐付いたユーザ情報を更新したタイミングで、OpenIDMのログに Created success.と記録されます。
連携先へのユーザ作成完了時に、対象ユーザに対してメール送信を行いたい場合
Reconciliationの場合であれば、resultフェーズで処理結果に応じ、メール送信を行うことが可能ですが、そもそもAutomatic syncではresultフェーズの処理は実行されません。
またresultフェーズは全てのプロビジョニングが完了した時点で処理が呼び出される関係上、どうしてもリアルタイム性であったり、個別ユーザのハンドリングが難しくなってしまいます。
そこで解決策として利用するのが今回の postAction です。
postActionを活用し、モテモテエンジニアを目指しましょう!
*1 今回はプロビジョニングに関する部分を説明したいので、Live Syncについては割愛します。
*2 sourceオブジェクトとはReconciliation実行時の入力源泉に含まれるユーザ情報を表します。
*3 targetオブジェクトとはReconciliation実行時の連携先に含まれるユーザ情報を表します。