アイデンティティ ワークフローを自動化する理由
- 新しい従業員が IdP でプロビジョニングされた時点で、複数の業務アプリケーションにオンボーディングする。
- アイデンティティの変更を、1 つのステップで複数のダウンストリーム システムに反映する。
- ユーザーが削除されたときに、ダウンストリーム システム全体でアクセス権を解除する。
- アイデンティティ ライフサイクル イベントに依存するプロセスから、手動の手順を排除する。
アーキテクチャの概要
- 企業 IdP (例: Okta) — 従業員アイデンティティの信頼できる情報源です。
- Auth0 Inbound SCIM — IdP からのプロビジョニングイベントを受信し、Auth0 でユーザーを作成または更新します。
- Auth0 Action を使用する Event Stream — ユーザーのライフサイクルイベントを監視し、サーバーサイドコードを実行します。
- 複数の外部システム — 変換されたデータの送信先です。この例では、CRM (HubSpot) とチーム通知チャネル (Slack) を対象としています。
- 管理者が企業 IdP でユーザーをアプリケーションに割り当てます。
- IdP が SCIM 経由で変更を Auth0 にプッシュします。
- Auth0 がユーザープロファイルを作成または更新し、イベントを発行します。
- Event Stream が Action をトリガーし、複数の外部 API を呼び出します。
オーケストレーションとコリレーションの違いは、ダウンストリームシステムの数にあります。コリレーションでは、1 つのイベントを 1 つの外部レコードに対応付けます。オーケストレーションでは、より広いワークフローの一部として、1 つのイベントを複数のシステムに分岐させます。
前提条件
- Events が有効化された Auth0 テナント。利用可能なプランの詳細については、Event Stream を作成するを参照してください。
- SCIM プロビジョニングをサポートする企業向け IdP (例: Okta、Microsoft Entra ID) 。
- 該当する接続に対して Auth0 Inbound SCIM が設定されていること。詳細については、Inbound SCIMを参照してください。
- 各外部システムの API 認証情報。この例では、次のものが必要です。
- Contacts の書き込みスコープを持つ HubSpot のプライベートアプリのアクセストークン。
- 対象チャネル用の 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 のプライベートアプリのアクセストークンを設定します。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 にメッセージを投稿します。