ID ワークフローを自動化する理由
- 新入社員が IdP でプロビジョニングされた時点で、複数の業務アプリケーションにオンボーディングする。
- ID の変更を、1 回の処理で複数の下流システムに反映する。
- ユーザーが削除された際に、複数の下流システムにまたがるアクセス権を無効化する。
- ID ライフサイクル イベントに依存するプロセスから手作業の手順を排除する。
アーキテクチャの概要
- 企業向け IdP (例: Okta) — 従業員IDの信頼できる情報源です。
- Auth0 Inbound SCIM — IdP からプロビジョニングイベントを受け取り、Auth0 でユーザーを作成または更新します。
- Auth0 Action を使用する Event Stream — ユーザーのライフサイクルイベントを監視し、サーバーサイドコードを実行します。
- 複数の外部システム — 変換後のデータの送信先です。この例では、CRM (HubSpot) とチーム通知チャネル (Slack) を対象としています。
- 管理者が 企業向け IdP 内のアプリケーションにユーザーを割り当てます。
- IdP がその変更を SCIM 経由で Auth0 に送信します。
- Auth0 がユーザープロファイルを作成または更新し、イベントを発行します。
- Event Stream によって、複数の外部 API を呼び出す Action がトリガーされます。
オーケストレーションと相関付けの違いは、連携先システムの数にあります。相関付けでは、1 つのイベントを 1 つの外部レコードに対応付けます。オーケストレーションでは、より大きなワークフローの一部として、1 つのイベントを複数のシステムに振り分けます。
前提条件
- Events が有効化された Auth0 テナント。プランの提供状況について詳しくは、Event Stream を作成するをご覧ください。
- SCIM プロビジョニングをサポートする企業向け IdP (例: Okta、Microsoft Entra ID) 。
- 該当する接続に対して設定済みの Auth0 Inbound SCIM。詳しくは、Inbound SCIMをご覧ください。
- 各外部システムの API 認証情報。この例では、次のものが必要です。
- Contacts への書き込みスコープを持つ HubSpot private app のアクセストークン。
- 対象チャンネル用の Slack Incoming Webhook URL。
SCIM プロビジョニングを設定する
- Okta
- Other IdPs
- Auth0 Dashboard で Authentication > Enterprise に移動し、SAML または OIDC のエンタープライズ接続を選択します。
- Provisioning タブを選択し、Inbound SCIM を有効にします。
- SCIM トークンを生成し、コピーします。
- Okta で、Auth0 とのフェデレーションに使用しているアプリケーションを開きます。
- Provisioning タブを選択し、Configure API Integration を選択します。
- 統合を有効にし、Auth0 の SCIM エンドポイント URL とトークンを貼り付けて、Save を選択します。
- To App で、Create Users、Update User Attributes、Deactivate Users を有効にします。
Event Stream Action を作成する
user.created、user.updated、user.deleted の各イベントを発行します。次に、これらのイベントを複数の下流システムに振り分ける Auth0 Action を使用して、Event Stream を作成します。
Event Stream を作成する
- Auth0 Dashboard > Event Streams に移動します。
- Create Event Stream を選択します。
- ストリームの種類として Auth0 Actions を選択します。
- わかりやすい名前 (例:
Onboarding Workflow) を入力します。 user.created、user.updated、user.deletedを購読します。
Action ハンドラーを作成する
部分的な失敗に対処する
- ログを記録して処理を続行する。 各外部呼び出しを try-catch ブロックで囲み、1 つのシステムでの障害が原因で他の処理まで止まらないようにします。エラーはログに記録し、あとで手動で対応できるようにします。
- べき等な操作で再試行する。 Action がエラーをスローすると、Auth0 はイベントを再試行します。再試行によって重複レコードが作成されないよう、各外部呼び出しがべき等であることを確認してください。
- サーキットブレーカーを使用する。 外部システムで障害が継続的に発生している場合は、遅延の連鎖を避けるため、そのシステムへの呼び出しを打ち切ることを検討してください。
API キーをシークレットとして保存する
- Action エディタで、Secrets (鍵アイコン) を選択します。
HUBSPOT_TOKENという名前のシークレットを追加し、値に HubSpot の private app アクセストークンを設定します。SLACK_WEBHOOK_URLという名前のシークレットを追加し、値に Slack の Incoming Webhook URL を設定します。
保存してデプロイ
パイプラインを確認する
- 企業向け IdPで、Auth0 に接続されているアプリケーションにテストユーザーを割り当てます。
- Auth0 の User Management > Users にそのユーザーが表示されることを確認します。
- 対応する連絡先が HubSpot に作成され、Slack に通知が投稿されることを確認します。
- IdP でユーザー名を更新し、その変更が Auth0 と HubSpot の両方に反映されることを確認します。
- IdP でそのユーザーのアプリケーションへの割り当てを解除します。そのユーザーが Auth0 でデプロビジョニングされ、HubSpot の連絡先が削除され、Slack に通知が投稿されることを確認します。
パターンを拡張する
- CRM + チケット管理 — Salesforce の連絡先を作成し、Jira でオンボーディング用チケットを起票します。
- CRM + 分析 — HubSpot の連絡先を更新し、Segment に
identify呼び出しを送信します。 - プロビジョニング + 通知 — 社内のプロビジョニングサービスを呼び出し、Microsoft Teams にメッセージを投稿します。