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

アクション (Actions)

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

アクション (Actions) は、認証 (Authentication) フロー内で判断が必要な場合に役立ちます。主なユースケースは次の通りです:

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

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

警告:

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

セルフホスト環境では、アクションスクリプトは Logto サーバープロセス内で、その権限のもとで実行されます。スクリプトの編集やテスト権限を与えることは、Logto ホスト上でのコード実行権限を与えるのと同等です。そのため、管理コンソールは信頼できないユーザーと共有しないでください。スクリプトは信頼されたサーバーサイドコードとして扱ってください。ランタイムはスクリプトの実行時間とメモリを制限しますが、信頼できないコードに対するセキュリティ境界にはなりません。

サインインフローにおけるアクション (Actions) の位置付け

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

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

どちらのアクションタイプも Experience API の SignIn インタラクションでのみ実行されます。1 要素認証後アクションはパスワードサインイン時のみ適用され、サインイン後アクションは認証 (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) を使用してください。

次のステップ