メインコンテンツへスキップ
カスタムコードを通じた Auth0 の拡張性に関する長期的なビジョンの一環として、Actions のベータ期間中に導入したプログラミングモデルを洗練し、簡素化しました。今後は、すべての Trigger 間で、より一貫性があり予測しやすい方法で Actions を作成できるようになります。イベントデータは Auth0 Management API および Auth0 プラットフォームの他の側面と、より緊密に整合するようになりました。カスタムコードによってトランザクションの動作を変更する場合は、常に新しい api 引数のメソッドを呼び出すことで行います。 一般提供 (GA) 以前の期間に作成された Action を移行するには、通常、次の手順を実施します。
  1. 重大な変更点 セクションで説明しているとおりに、名前変更や場所の変更が行われたイベントプロパティへの参照を調整します。
  2. 望ましい副作用を記述したオブジェクトを組み立てて返す代わりに、副作用の実行 セクションで説明しているとおり、関連する api メソッドを呼び出すようにカスタムコードを更新します。
  3. リダイレクトコールバックを処理する必要がある Actions では、新たに公開された専用関数を使用します。event.protocol === 'redirect-callback' に依存するコードを使用していた場合は、Redirect with Actions のページを確認してください。

破壊的変更

クエリおよびボディパラメーター

クエリおよびボディパラメーターには、event.request.queryevent.request.body オブジェクトを使用して直接アクセスできます。これらは、認可が GET リクエストまたは POST リクエストのいずれで開始されたかに関わらず利用できます。認可リクエストの一部として送信される多くのプロトコル固有のクエリまたはボディパラメーターは、現在では event.transaction オブジェクト上のトップレベルの値としても利用できます。ユースケースがサポートされていない場合を除き、event.request.query および event.request.body ではなく event.transaction を使用することを推奨します。これらの変更の対応関係を以下に示します。
GA 前のプロパティGA のプロパティ
event.actor.ipevent.request.ip
event.actor.hostnameevent.request.hostname
event.actor.geoIpevent.request.geoip
event.actor.languageevent.request.language
event.actor.methodevent.request.method
event.actor.userAgentevent.request.user_agent
event.actor.bodyevent.request.body
event.actor.queryevent.request.query
event.actor.query.audienceevent.resource_server.identifier
event.actor.query.scopeevent.transaction.requested_scopes
event.actor.query.acr_valuesevent.transaction.acr_values
event.actor.query.ui_localesevent.transaction.ui_locales
event.protocolevent.transaction.protocol
context.secretsevent.secrets

ユーザー プロファイルのプロパティ

全般的に、event.user オブジェクトのプロパティは、Auth0 ユーザープロファイル構造 に合わせるために、キャメルケースからスネークケースへ変更されています。例えば、event.user.appMetadataevent.user.app_metadata に変更されました。

副作用の実行

GA 前の post-login トリガーのバージョンでは、Action からオブジェクトを返すことで副作用を実行していました。Actions GA では、これらの変更をカプセル化し、エディタ内でより良い型ヒントとインラインドキュメントを提供するために、api オブジェクトが用意されています。

ユーザーの user_metadata を更新する

GA 前トリガー:
async function myFunction(event, context) {
  return {
    user: {
      userMetadata: {
        myParam: "foo"
      }
    }
  };
}
GA トリガー:
async function onExecutePostLogin(event, api) {
  api.user.setUserMetadata('myParam', 'foo');
}
このメソッドはコールバック内で使用すべきではありません。このメソッドを呼び出しても、メタデータは即座には更新されないためです。その代わりに、同じフロー内の複数の Actions で、このメソッドを複数回呼び出すことができます(1 つの Action で設定されたメタデータは一時オブジェクトに適用され、その後の Actions からも利用可能になります)。実行エンジンはそれらの変更を集約し、フローが完了する前にメタデータを一括で更新します。

ユーザーの app_metadata の更新

GA 前トリガー:
async function myFunction(event, context) {
  return {
    user: {
      appMetadata: {
        myParam: "foo"
      }
    }
  };
}
GA トリガー:
async function onExecutePostLogin(event, api) {
  api.user.setAppMetadata('myParam', 'foo');
}
コールバック内ではこのメソッドを使用しないでください。このメソッドを呼び出しても、メタデータは即座には更新されません。その代わりに、同じフロー内の複数の Actions でこのメソッドを複数回呼び出すことができます(ある Action で設定されたメタデータは一時オブジェクトに適用されるため、後続の Actions でも利用できます)。エンジンはこれらの変更を集約し、フローが完了する前にメタデータをまとめて更新します。

ログインを拒否する

GA 前のトリガー:
async function myFunction(event, context) {
  throw new Error("Access denied.");
}
GA のトリガー:
async function onExecutePostLogin(event, api) {
  api.access.deny("Access denied.");
}
Error をスローしてもログインは拒否されますが、api.access.deny を呼び出すことが推奨されます。

アクセストークンにカスタムクレームを追加する

GA 前トリガー:
async function myFunc(event, context) {
  return {
    accessToken: {
      customClaims: {
        'https://example.com/custom/claim': 'Custom claim value',
      }
    }
  };
}
GA トリガー:
async function myFunc(event, api) {
  api.accessToken.setCustomClaim('https://example.com/custom/claim', 'Custom claim value');
}

IDトークンにカスタムクレームを追加する

GA前トリガー:
async function myFunc(event, context) {
  return {
    idToken: {
      customClaims: {
        'https://example.com/custom/claim': 'Custom claim value',
      }
    }
  };
}
GA トリガー:
async function myFunc(event, api) {
  api.idToken.setCustomClaim('https://example.com/custom/claim', 'Custom claim value');
}

多要素認証を動的に有効にする

GA 前トリガー:
async function myFunction(event, context) {
  return {
    command: {
      type: "multifactor",
      provider: "any"
    }
  };
}
GA トリガー:
async function onExecutePostLogin(event, api) {
  api.multifactor.enable("duo");
}

ユーザーをリダイレクトする

GA 前のトリガー:
async function myFunction(event, context) {
  return {
    command: {
      type: "redirect",
      url: "https://my-app.example.com"
    }
  };
}
GA トリガー:
async function onExecutePostLogin(event, api) {
  api.redirect.sendUserTo("https://my-app.example.com");
}
パラメータが安全に送信され、リプレイ攻撃を回避できるようにするため、リダイレクト経由でデータを渡す方法は Actions の GA に伴い大きく変更されました。詳細については、Redirect with Actions を参照してください。

スコープの操作

Actions のベータ期間中は、ID トークンおよび のスコープを直接操作できる機能を試験的に提供していましたが、Actions GA ではこの機能はサポートしていません。