こんにちは、ネクストモード株式会社のゆきなわです。
Okta Identity Engine (OIE) の 2025年12月リリースにて、Okta Workflows の Delegated Flow(委任フロー)にアップデートがありました。それが今回ご紹介する [Caller(呼び出し元)] 入力フィールドの追加です。
Okta Identity Governance (OIG) の Access Requests 機能を利用している環境において、承認後の Workflows による自動化処理を実装する際、これまでは「どのトリガー方式でフローを起動するか」「データの受け渡しをどうするか」という点で検討が必要でした。
今回の新機能によって、Access Requests から Delegated Flow を直接起動するアクション駆動による連携がより使いやすくなりました。本記事では、従来の手法(イベント駆動 vs アクション駆動)を整理しつつ、Delegated Flow に追加された新機能である Caller 入力フィールドを活用した構成をご紹介します。
参考リリースノート
Okta Identity Engine Release Notes - Production Version: 2025.12.0
Access Requests の承認完了後に Workflows を起動する場合、主に2つのアプローチがあります。
それぞれの特徴とこれまでの課題を整理した後、今回新たに加わった Caller 入力フィールドによる解決策を示します。
Okta の Access Request Resolved イベントカードをトリガーにフローを起動する方法です。
Request Type の設定画面で、承認後のアクションのタイプとして [Okta] Run a workflow を指定し、特定の Delegated Flow を直接呼び出す方法です。
※ご注意
Access Requests から直接 Delegated Flow を呼び出すアクション駆動は、本記事執筆時点で Early Access (早期アクセス) 機能となっています。
ご利用の際は環境設定をご確認ください。
リクエストタイプを作成する - Okta Help Center
今回のアップデートにより、2つ目のアクション駆動アプローチにおいて、Delegated Flow 側で、フローの呼び出し元(実行元)の情報を持つ Caller オブジェクトを実行時の入力として受け取れるようになりました。
例えば、Okta Admin Console メニュー [Workflows(ワークフロー)] > [Delegated flows(委任されたフロー)] からフローをマニュアル実行した場合は、実行したユーザーの username、id を含む情報が、また、Access Requests からフローを実行した場合は、該当するリクエストの ID (requestId) を含む情報が Caller オブジェクトとして自動的に入力されます。
これにより、Access Requests と Workflows の連携において以下の構成が可能になります。
requestId を自動的に渡す(手動マッピング不要)つまり、イベント駆動のようにデータを手軽に取得しつつ、アクション駆動の明確さでフローを制御する構成が実現できます。
今回は、ユーザーが Okta Identity Governance の Access Requests (Request Types) で申請を行い、承認された後に Workflows を自動実行させるシナリオを想定します。
Access Requests には大きく分けて Request Types(リクエストタイプ)と Conditions(条件)の2つの設定方法があります。今回は Request Types を利用します。
Request Types は、リクエストのライフサイクルを定義する構造化フローです (help.okta.com)。質問、タスク、タイマーなどのステップから構成され、Teams、Slack、Jira 、ServiceNow などの外部システムとの統合も可能です。
Request Types の概要と基本的な作成方法については、過去のブログ記事をご参照ください。
今回は Request Type の一例として、下図の姓、名、メールアドレス、所属グループ、入社日をフォーム入力項目として持つ、新規アカウント作成申請を想定したフローを作成するものとします。
Access Requests の承認完了後のアクションとして [Okta] Run a workflow を設定し、起動する Delegated Flow を指定します。指定したフローには明示的な入力フィールドを設けず、Request Type のフォームに入力されたフィールド値のマッピングは行いません。
なお、Access Requests で Run a workflow アクションを使用するには、事前準備が必要です (help.okta.com)。以下の設定手順を参照してください。
設定手順
それでは、実際の Workflows 実装を見ていきましょう。
まず、Workflows のトリガーカード(Delegated Flow)を確認します。新しく Caller というオブジェクト入力フィールドが追加されています。
Access Requests から Delegated Flow が呼び出されると、Caller 入力フィールドに呼び出し元の情報を含む Caller オブジェクトが格納されます。オブジェクトの中にある ID フィールドには、Access Requests の一意な Request ID(下図例: 695b2f50...)が格納されているので、これを後続の処理で使用します。
取得した ID を使い、Okta Connector の Custom API Action カードなどで Okta Identity Governance API リクエストを実行します。今回は Request Types で作成されたリクエストを取得するため、以下の Access Requests V1 API を使用します。
/governance/api/v1/requests/{requestId}GET補足: API バージョンの使い分け
今回は Request Types を対象としているためv1/requestsエンドポイントを使用しています。
Access Requests Conditions で作成されたリクエストを扱う場合は、API のスキーマが異なるため、Access Requests V2 API (/governance/api/v2/requests/{requestId}) を使用してください。
API で取得した詳細情報
API から返却されるレスポンス (JSON) には、入力フォームの値を示す requesterFieldValues だけでなく、approvals、createdBy のようなリクエストに関するメタ情報も含まれています。
requesterFieldValues: ユーザーが入力した値(姓、名、所属グループなど)approvals: 誰がいつ承認したか(approverName、decided など)createdBy: 申請者情報このように、従来のアクション駆動によるマッピング方式では取得しにくかった承認者のコメントや承認日時なども、Caller 入力フィールドから得られるリクエスト ID 情報を用いて、API 経由で取得することが可能です。
API で取得した requesterFieldValues は、フォーム入力項目のキーに対応する prompt と値に対応する value を含むオブジェクトのリスト形式になっているため、そのままだと扱いづらい場合があります(下図)。
prompt(項目名)だけのリストを作成value(入力値)だけのリストを作成List - Pluck と Object - Zip カードによるオブジェクト作成の処理フロー
これにより、{"姓": "Yamada", "名": "Taro"} のようなシンプルなオブジェクトに変換でき、後続のアクション(プロビジョニングや Slack 通知など)で値を参照しやすくなります。
あとは、ユーザープロビジョニングや通知に関するカードを用い、要件に応じた具体的な処理を実装していく流れとなります。
Delegated Flow の新機能 Caller 入力フィールドを活用することで、Access Requests と Workflows の連携をより疎結合でメンテナンスしやすい形にできます。
Access Requests の自動化を設計される際は、この Caller 入力フィールド + API によるリクエスト詳細情報の取得の構成をぜひご検討ください。
Okta Identity Governance と Okta Workflows による業務フローの自動化、Okta のライセンス体系や価格などについてさらに詳しく知りたい方は、ぜひ弊社窓口までお気軽にお問い合わせください。