実際のユースケース:Webhookで認証システムを拡張する
Logto Webhook を使用して認証と認可を行う実際のケースを発見し、ウェルカムメールの送信、データベースへのデータ同期、ユーザーの役割/権限のリアルタイム更新、サードパーティの分析との統合を含みます。
Logto Webhook を使用すると、ユーザー登録、サインイン、パスワードリセットなどの特定のイベントに関するリアルタイムの更新を、継続的にポーリングすることなく受け取ることができます。イベントがトリガーされると、Logto はイベントに関する情報を含む HTTP リクエストを指定したエンドポイント URL に送信します。あなたのアプリケーションはそのリクエストを受け取り、メールの送信やデータベースの更新など、データに基づいたカスタマイズされたアクションを実行することができます。
Logto コンソールには直接存在しない機能もありますが、Webhook を使用してユーザーの行動を監視し、それを達成することができるかどうかを検討することができます。
Logto Webhook の使用シナリオ
Webhook は認証システムに無限の可能性をもたらします。以下に、いくつかの実際のユースケースを紹介します。
1. メールまたは通知の送信
「Logto メールを使用して、カスタムのウェルカムメールをログインリンク付きでユーザーに送信できますか?私たちは認証コードのみのログインを使用しており、パ スワードはありません。」
Logto のメールサービスは現在、直接的なウェルカムメールをサポートしていませんが、これは Webhook にとって古典的なシナリオです。User.Created
イベントを使用し、エンドポイントがユーザー登録情報を受信したら直ちに、ユーザーのメールにウェルカムメールを送信します。
また、役割の更新後にユーザーに通知したり、新しいメンバーについて管理者に通知したり、Slack や Discord でボットメッセージをプッシュしてチームに情報を提供したりすることもできます。
2. データ同期
「管理コンソールでユーザーを削除した場合、他のシステムとの同期はどうすればよいですか?」
User.Deleted
イベントを使用して、削除されたユーザーのステータス変更を取得し、他のシステムに同期します。また、ユーザーのログインセッションを即座にクリアすることもできます。これはクロスアプリのユーザー管理に役立ちます。
「Logto テナントの下に複数のアプリがあります。ユーザー作成を検出して、特定のアプリで処理されることを確認するための Webhook が必要です。」
PostRegister
イベントを使用し、ペイロードに AppId
情報が含まれているため、複数のアプリサービスのパーソナライズ体験デザインをサポートします。
3. 追加の API 呼び出しを実行する
「ユーザーの権限を変更した場合、ログアウトしてログインし直さないと更新が有効になりません。これを自動化できますか?」
管理者がユーザーの役割を変更したり新しい権限を追加した場合、デフォルトではユーザーは再びログインするか、アクセス トークンを更新することに同意する必要があります。認可の変更を即座に反映させたい場合、Webook User.Data.Updated
を使用して通知し、新しいアクセス トークンを発行したり再同意を有効にします。
また、短いアクセストークンの有効期限を使用したり、Management API のエンドポイントを定期的に呼び出してユーザーの役割と権限を取得することもできますが、Webhook を通じてのみ、最もタイムリーな更新を取得できます。
「各新しいユーザーを私のデータベースに追加し、『組織のセットアップ』ページに案内し、その後のユーザーには組織招待のみを許可したい。Logto でこれをサポートできますか?」
まず、データ同期が必要です。新しいユーザーをデータベースに追加するために Webhook Post.Register
を使用します。その後、Logto 管理 API を使用して、組織の設定と招待のためのプロンプトページをデザインします。
4. データ分析
「Logto を分析ツール(Google Analytics、Umami、Plausible など)に接続してユーザーのログインを追跡することはできますか?」
ユーザーのログインや認可に関連するデータを分析する必要がある場合、Logto の Webhook 機能を使用できます。Logto が送信する Webhook をリッスンし、データをサードパーティの分析ツールに統合できます。
Webhook が必要かどうかを確認する
ステップ 1: 必要な Webhook イベントがあるかどうかを確認する
Webhook はアカウントレベルと組織レベルの 2 つに分かれており、すべてのイベント は以下のように示されています:
セグメント化シナリオを促進し、一致するデータを取得するために詳細に分かれています。ただし、同時に複数のイベントから情報が必要な場合、1 つの Webhook に対して複数のイベントを選択することができます。
注意: 「ユーザーインタラクション」タイプのイベントは、UI 内でのユーザーアクションをキャプチャし、管理者によって開始された変更は含まれません。「ユーザー」タイプのイベントは、管理者およびエンドユーザーによるアクションすべてを対象とします。たとえば、イベント PostRegister
はサインイン体験におけるユーザーの登録を指し、User.Created
は UI インターフェースでユーザーによって登録されたすべての新しいユーザーおよび管理者によって追加されたユーザーを含みます。
ステップ 2: リクエストペイロードに必要な情報が含まれているか確認する
異なるイベントは異なる情報を持っており、既存の情報がユースケースの要求を直接満たすかどうかを確認します。たとえば、id
、username
、primary email
、profile
、customData
、identities
、lastSignInAt
、createdAt
、applicationId
、isSuspended
、OrganizationId
、OrganizationRoleId
、OrganizationScopeId
などの情報があります。詳細については、Webhook リクエスト をご参照ください。そうでない場合、関連するユーザー情報を取得するために Management API を使用することもできます。
ステップ 3: Management API を組み合わせて高度な機能を拡張する
さらなる管理と機能設定を実装するために Logto Management API を使用することもできます。
結論
Logto Webhook イベントは多くのシナリオを網羅しているだけでなく、署名キーとカスタムヘッダーの確認を通じて 安全な伝送 を確保しています。また、Logto Webhook ダッシュボードを表示して、過去 24 時間以内の各 Webhook の 伝送状況を監視する ことができます。