認証基盤に Auth0 を使ったアプリケーションにカスタムロジックを差し込む

認証基盤に Auth0 を使ったアプリケーションにカスタムロジックを差し込む

2026.04.24

認証・認可の処理を設計していると、「ログインとかユーザー登録のタイミングで、ちょっとした処理を挟みたい」と思うことがあります。
たとえば、新規ユーザーが登録されたら裏側で別サービスにデータを同期しておきたいとか、ログイン時にユーザーの所属に応じてトークンの中身をちょっと書き換えたいとか、あるいは、怪しいログインを検知したら Slack にサッと通知を投げたい、みたいなケースです。要するに、「認証フローの途中に、自分たちのロジックを差し込みたい」場面ですね。
こういった要件は、認証基盤を運用していればよくぶつかるポイントかと思います。IDaaS や認証サービスによってアプローチは色々ですが、Auth0 の場合は Actions という機能でこの課題に応えています。認証フローの特定のタイミングにフックして、Node.js で書いたコードを動かせる仕組みです。
今回はこの Auth0 の Actions を実際に触ってみて、「ユーザーがログインしたら Slack に通知する」という処理を実装してみます。

ログインアプリケーション

サンプルとしてログインするアプリケーションを用意します。
ログインボタンを押すと Auth0 のログイン画面が表示され、ログインするとトークンやユーザー情報を表示するだけのアプリケーションです。

スクリーンショット 2026-04-24 15.05.28

ログイン後
スクリーンショット 2026-04-24 18.04.25

Actions を構築

Actions を作成します。
Auth0 の管理コンソールからアクション -> トリガーを選択します。

auth0trigger

カスタムロジックを実行するタイミングとなるトリガーの一覧が出ます。
ログイン post-login やユーザー作成前 pre-user-registration、パスワード変更後 post-change-password など7つのトリガーが用意されています。
使えるトリガーは増えることもあるので、最新の状況は公式ドキュメントで確認すると良いでしょう。
https://auth0.com/docs/ja-jp/customize/actions/explore-triggers

今回はログインしたことを Slack へ通知するので post-login を選択します。

auth0statemachine

状態マシンのようなものが出るのでアクションの追加 -> 初めから構築する を選択します。
ダイアログが出てくるので名前に「notify_slack_user_login」と入力して作成を押します。

※「初めから構築する」以外にも「テンプレートを選択する」があり、こちらを選ぶと以下のように認証認可で挟み込みたいよくある処理のアクションテンプレート一覧が出ます。やりたいことと同じものがあればここから選んで実装できるので、導入がわかりやすくて楽ですね。

auth0template

今回は「初めから構築する」ので空の関数が入力されたエディタが表示されます。この関数内にカスタムロジックを記述していきます。

auth0implementaction

Action 内では左メニューペインからシークレットを登録することができ、参照できます。
外部システム連携したい時などに、外部システムのシークレットを直書きするわけにはいかないですから、こういう必須な機能はよく整ってますね。今回は Slack の WebHook URL をシークレットに登録します。

また、npm パッケージを利用することもでき、今回は npm パッケージとして @slack/webhook を利用します。
依存パッケージは Action ごとに設定し、ネイティブに依存しないものであればほぼいずれの npm パッケージも利用できるようです。

auth0dependency

こちらが完成したコードです。

const { IncomingWebhook } = require('@slack/webhook');

exports.onExecutePostLogin = async (event, api) => {
    const url = event.secrets.SLACK_WEBHOOK_URL;
    const webhook = new IncomingWebhook(url);

    // Send the notification
    await webhook.send({ text: `${event.user.email}が${event.client.name}にログインしたよ!` });
};

ログインしたユーザーのメールアドレス event.user.email と、アプリケーション名 event.client.name を通知します。
このあたりの使える変数もよくドキュメントにまとまってます。

スクリーンショット 2026-04-24 17.16.23

デプロイボタンを押してデプロイしましょう。
post-login の画面に戻り、作ったアクション「notify_slack_user_login」をドラッグアンドドロップで差し込みます。

auth0triggerafterlogin

サンプルアプリケーションに戻ってログインボタンを押し、Auth0 からログインしてみます。

スクリーンショット 2026-04-24 17.25.16

私がログインしたことが Slack に通知されました!

スクリーンショット 2026-04-17 16.58.56

終わりに

IDaaS を使っていると、「ここにちょっと自分たちのロジックを挟みたい」という場面は案外よく出てくるので、Auth0 の Actions のように認証フローにカスタムコードをフックできる仕組みが用意されているのはありがたいですね。
一方で言語が Node.js 限定だったり、Auth0 の管理画面上でコードを記述する関係上、バージョン管理が多少やりづらかったりする辛みもあるかなと思います。
例えば自作の HTTP エンドポイントをフックできる仕組みがあると、より自分たちのスタイルでカスタムフックを実装できて良いなと思いました。
もちろんその分実装コストも管理コストも上がるので、このあたりはプロジェクトの好みによるでしょう。
IDaaS を選ぶ時のひとつの観点として「カスタムロジックをどう差し込めるか」を見てみるのも面白いかもしれません。

この記事をシェアする

関連記事