Skip to main content
Event Streams と Auth0 Actions を使うと、ID ライフサイクルの変化を、複数のシステムにまたがる自動化された業務ワークフローへとつなげられます。Auth0 でユーザーが作成、更新、または削除されると、Action がサーバーサイドコードを実行し、外部 API を並列に呼び出します。これにより、独自のミドルウェアをデプロイしなくても、完全なパイプラインを構築できます。 このガイドでは、エンドツーエンドの例を使って説明します。企業の ID プロバイダー (IdP) から Auth0 Inbound SCIM 経由でユーザーをプロビジョニングし、その変更内容を単一の Event Stream Action で CRM プラットフォームとチーム通知チャネルに振り分けます。

ID ワークフローを自動化する理由

ID を起点とするワークフローの自動化は、次のような場合に役立ちます。
  • 新入社員が IdP でプロビジョニングされた時点で、複数の業務アプリケーションにオンボーディングする。
  • ID の変更を、1 回の処理で複数の下流システムに反映する。
  • ユーザーが削除された際に、複数の下流システムにまたがるアクセス権を無効化する。
  • ID ライフサイクル イベントに依存するプロセスから手作業の手順を排除する。

アーキテクチャの概要

このガイドのパイプラインは、次の 4 つのコンポーネントで構成されます。
  1. 企業向け IdP (例: Okta) — 従業員IDの信頼できる情報源です。
  2. Auth0 Inbound SCIM — IdP からプロビジョニングイベントを受け取り、Auth0 でユーザーを作成または更新します。
  3. Auth0 Action を使用する Event Stream — ユーザーのライフサイクルイベントを監視し、サーバーサイドコードを実行します。
  4. 複数の外部システム — 変換後のデータの送信先です。この例では、CRM (HubSpot) とチーム通知チャネル (Slack) を対象としています。
フローは次のとおりです。
  1. 管理者が 企業向け IdP 内のアプリケーションにユーザーを割り当てます。
  2. IdP がその変更を SCIM 経由で Auth0 に送信します。
  3. Auth0 がユーザープロファイルを作成または更新し、イベントを発行します。
  4. 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 プロビジョニングを設定する

まだ Inbound SCIM を設定していない場合は、以下の手順で IdP を Auth0 に接続します。
  1. Auth0 Dashboard で Authentication > Enterprise に移動し、SAML または OIDC のエンタープライズ接続を選択します。
  2. Provisioning タブを選択し、Inbound SCIM を有効にします。
  3. SCIM トークンを生成し、コピーします。
  4. Okta で、Auth0 とのフェデレーションに使用しているアプリケーションを開きます。
  5. Provisioning タブを選択し、Configure API Integration を選択します。
  6. 統合を有効にし、Auth0 の SCIM エンドポイント URL とトークンを貼り付けて、Save を選択します。
  7. To App で、Create UsersUpdate User AttributesDeactivate Users を有効にします。
設定を保存したら、IdP のアプリケーションにテストユーザーを割り当てます。そのユーザーが Auth0 の User Management > Users に表示されることを確認してください。

Event Stream Action を作成する

SCIM プロビジョニングを有効にすると、Auth0 は user.createduser.updateduser.deleted の各イベントを発行します。次に、これらのイベントを複数の下流システムに振り分ける Auth0 Action を使用して、Event Stream を作成します。

Event Stream を作成する

  1. Auth0 Dashboard > Event Streams に移動します。
  2. Create Event Stream を選択します。
  3. ストリームの種類として Auth0 Actions を選択します。
  4. わかりやすい名前 (例: Onboarding Workflow) を入力します。
  5. user.createduser.updateduser.deleted を購読します。

Action ハンドラーを作成する

Action エディタで、各イベントタイプを外部システムへの API 呼び出しにマッピングするハンドラーを記述します。以下の例では、新しいユーザーがプロビジョニングされると、HubSpot CRM の連絡先を作成し、Slack に通知を投稿します。

部分的な失敗に対処する

Action が複数の外部システムを呼び出す場合、ある呼び出しは成功しても、別の呼び出しは失敗することがあります。次のような戦略を検討してください。
  • ログを記録して処理を続行する。 各外部呼び出しを try-catch ブロックで囲み、1 つのシステムでの障害が原因で他の処理まで止まらないようにします。エラーはログに記録し、あとで手動で対応できるようにします。
  • べき等な操作で再試行する。 Action がエラーをスローすると、Auth0 はイベントを再試行します。再試行によって重複レコードが作成されないよう、各外部呼び出しがべき等であることを確認してください。
  • サーキットブレーカーを使用する。 外部システムで障害が継続的に発生している場合は、遅延の連鎖を避けるため、そのシステムへの呼び出しを打ち切ることを検討してください。

API キーをシークレットとして保存する

  1. Action エディタで、Secrets (鍵アイコン) を選択します。
  2. HUBSPOT_TOKEN という名前のシークレットを追加し、値に HubSpot の private app アクセストークンを設定します。
  3. SLACK_WEBHOOK_URL という名前のシークレットを追加し、値に Slack の Incoming Webhook URL を設定します。
シークレットを使うと、認証情報を Action のソースコードに含めずに済みます。詳しくは、Action Secrets をご覧ください。

保存してデプロイ

Save Draft を選択し、続けて Deploy を選択します。これで Action が Event Stream に関連付けられ、サブスクライブしているイベントがトリガーされるたびに実行されます。

パイプラインを確認する

  1. 企業向け IdPで、Auth0 に接続されているアプリケーションにテストユーザーを割り当てます。
  2. Auth0 の User Management > Users にそのユーザーが表示されることを確認します。
  3. 対応する連絡先が HubSpot に作成され、Slack に通知が投稿されることを確認します。
  4. IdP でユーザー名を更新し、その変更が Auth0 と HubSpot の両方に反映されることを確認します。
  5. IdP でそのユーザーのアプリケーションへの割り当てを解除します。そのユーザーが Auth0 でデプロビジョニングされ、HubSpot の連絡先が削除され、Slack に通知が投稿されることを確認します。
イベントが届かない場合は、Auth0 Dashboard で Event Stream の配信ログを確認してください。詳しくは、Event Testing, Observability, and Failure Recovery を参照してください。

パターンを拡張する

このガイドで紹介しているアーキテクチャは、HubSpot や Slack に限定されるものではありません。REST API を備えた任意のシステムの組み合わせに、同じファンアウトパターンを適用できます。
  • CRM + チケット管理 — Salesforce の連絡先を作成し、Jira でオンボーディング用チケットを起票します。
  • CRM + 分析 — HubSpot の連絡先を更新し、Segment に identify 呼び出しを送信します。
  • プロビジョニング + 通知 — 社内のプロビジョニングサービスを呼び出し、Microsoft Teams にメッセージを投稿します。
別のシステムを対象にする場合は、適切な API エンドポイントと認証方式に合わせて Action ハンドラーを更新します。

詳細はこちら