メインコンテンツまでスキップ

アクション (Actions)

Logto アクション (Actions) を使うと、認証 (Authentication) フローの特定のタイミングで信頼された JavaScript を実行できます。アクションは同期的に実行されます:認証リクエストはスクリプトの完了を待ち、スクリプトの結果によってユーザーの更新やフローの継続可否が決まります。

アクション (Actions) は、認証 (Authentication) フロー内で判断を下す必要がある場合に便利です。主なユースケースは次の通りです:

  • 初回サインイン時にレガシーアイデンティティシステムからユーザーやパスワードを移行する。
  • Logto がサインインを完了する前に、ユーザープロファイルやアプリケーション固有のデータを更新する。
  • 外部サービスを呼び出し、その結果を Logto ユーザーに適用する。
注記:

アクション (Actions) は Logto OSS および Logto Cloud Enterprise プランで利用できます。

警告:

アクションスクリプトは認証 (Authentication) に影響を与え、ユーザーデータを変更できます。信頼できる管理者のみが閲覧、作成、編集、テスト、有効化、削除できるようにしてください。

セルフホスト環境では、アクションスクリプトは Logto プロセス内の仮想マシンで実行されます。信頼されたサーバーサイドコードとして扱い、信頼できないコードのセキュリティ境界とは見なさないでください。

アクション (Actions) がサインインに組み込まれる流れ

Logto では現在、2 種類のアクションタイプを提供しています:

アクションタイプ実行タイミングできること
第一要素認証後アクションパスワードサインイン時、Logto のローカルパスワード認証 (Authentication) が失敗した場合のみ実行。ローカルパスワードが有効な場合は実行されません。提出された認証情報をレガシーシステムで検証し、新しい Logto ユーザーの作成や既存ユーザーの更新、パスワードの移行を行うことができます。
サインイン後アクションユーザーがすべての認証 (Authentication) 要素(MFA を含む)を完了した後、Logto がサインインを完了しトークンを発行する前に実行。最終的なサインインコンテキストを使って既存の Logto ユーザーを更新・拡張できます。

どちらのアクションタイプも Experience API の SignIn インタラクションでのみ実行されます。第一要素認証後アクションはパスワードサインイン時のみ適用され、サインイン後アクションは認証 (Authentication) 方法に依存しません。

スクリプトモデル

各アクションタイプには 1 つの設定と、runAction という名前の JavaScript エントリ関数があります:

const runAction = async ({ event, environmentVariables = {} }) => {
// event を確認し、必要に応じて外部データを取得し、
// このアクションタイプでサポートされる結果を返します。
};

ペイロードには次のものが含まれます:

  • event: 本番環境の認証 (Authentication) イベント。内容はアクションタイプによって異なります。
  • environmentVariables: このアクション用に設定された文字列値。これらの値は関数ペイロード経由で渡され、process.env からは利用できません。

エディタは型情報を提供しますが、保存されたスクリプトは JavaScript として実行されます。スクリプトは非同期であり、注入された fetch 関数を使って外部 HTTPS API を呼び出すことができます。パッケージのインポートや requireprocess などの Node.js グローバルにはアクセスできません。

サポートされる結果はアクションタイプごとに異なります。アクションを有効化する前に、該当するリファレンスページを参照してください。

アクション (Actions) と Webhook の違い

アクション (Actions) と Webhook は異なる目的で使われます:

アクション (Actions)Webhook
実行タイミング認証 (Authentication) と同期的かつインラインで実行認証 (Authentication) リクエストの外で非同期的に実行
現在の認証 (Authentication) フローに影響可能か可能不可
結果からユーザーを変更できるかサポートされるユーザーパッチで可能直接は不可。受信側が Management API を別途呼び出し可能
イベントカバレッジ選択された認証 (Authentication) ポイント幅広いインタラクションやデータ変更イベント
主な用途認証情報移行、トークン発行前のプロファイル拡張通知、下流同期、分析

非同期処理は Webhook で行ってください。認証 (Authentication) 続行前に Logto が結果を必要とする場合のみアクション (Actions) を使用してください。

次のステップ