1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Auth0のActionsでuser_metadataを利用する

Last updated at Posted at 2023-11-10

背景

アプリケーションにて、Auth0のUserと自社データベースのデータを紐づけるために、Auth0のuser_metadataを利用していました。
しかし、Auth0のAuth PipelineのRulesが廃止するということで、Actionsで実装をするように変更する必要がでてきたので、その実装のメモになります。

実際に既存のルールは2024年11月18日まで有効と書かれています。
Screenshot 2023-11-10 at 18.02.06.png

user_metadataを設定する

手動でuser_metadataを追加することはあまりありませんが、今回は検証のために手動で追加します。
サイドメニューのUser ManagementのUsersからユーザー一覧を表示します。

Screenshot 2023-11-10 at 19.23.30.png

今回user_metadataを付与したいユーザーを一覧から選択し、クリックします。

Screenshot 2023-11-10 at 19.32.40.png

下の方にスクロールしていくと、Metadataがあります。
今回はuser_metadataを付与したいので、user_metadata欄に例としてuser_idを追加しています。
これで左下のSaveをクリックすればuser_metadataにuser_idというデータの付与が完了になります。

Screenshot 2023-11-10 at 19.34.26.png

従来の方法: Rulesを作成し、user_metadataを取得する

左のサイドメニューのAuth PipelineのRuleをクリックし、Rules画面を開きます。

Screenshot 2023-11-10 at 19.48.09.png

その後、右上のCreateボタンをクリックし、新規にRuleを作成します。

Screenshot 2023-11-10 at 18.26.18.png

廃止することについての警告がでますが、理解した上で右側の赤ボタンをクリックします。

Screenshot 2023-11-10 at 18.27.24.png

Pick a rules templateのEmptyからEmpty ruleをクリックします。

Screenshot 2023-11-10 at 18.28.04.png

user_metadataを取得するためのスクリプトをセットします。

Screenshot 2023-11-10 at 18.29.28.png

Script欄に以下のコードを貼り付けることで、userからuser_metadataを参照することができるようになります。
セットし、右下のSave Changesをクリックすれば完了です。

function (user, context, callback) {
  context.idToken.user_metadata = user.user_metadata;
  callback(null, user, context);
}

今後の方法: Flows(Actions)を作成し、user_metadataを取得する

左のサイドメニューのActionsのFlowsをクリックし、Flows画面を開きます。

Screenshot 2023-11-10 at 19.47.11.png

Loginをクリックして、右側にあるAdd Actionの+ボタンからBuild Customをクリックします。

Screenshot 2023-11-10 at 19.58.37.png

NameにActionの名前を設定します。
Triggerは「Login / Post Login」にし、
Runtimeは、環境に合わせたものもしくはRecommendedでいいかと思います。
入力ができたら、右下のCreateで作成します。

Screenshot 2023-11-10 at 20.01.57.png

作成すると、このように関数を設定することができる画面がでてきます。

Screenshot 2023-11-10 at 20.06.23.png

user_metadataを取得するための関数は以下になります。
この関数をそのまま上書きしてあげることで従来と同じように取得ができるようになります。

exports.onExecutePostLogin = async (event, api) => {
  if (event.authorization) {
    api.idToken.setCustomClaim("user_metadata", event.user.user_metadata);
  }
};

関数をセットすることができたら、右上のDeployをクリックしてデプロイします。

Screenshot 2023-11-10 at 20.18.46.png

デプロイしたActionをFlowsに組み込みます。
FlowsのLoginに戻り、先ほどデプロイしたActionを表示します。

Screenshot 2023-11-10 at 20.21.08.png

このGetUserMetadataをドラッグ&ドロップで右側のFlowsにセットします。

Screenshot 2023-11-10 at 20.23.18.png

右上のApplyをクリックして、Flowsを適用させます。

Screenshot 2023-11-10 at 20.24.46.png

設定適用後のデータを確認する

User ManagementのUsersからuser_metadataをセットしたユーザーを開き、Raw JSONタブを開きます。
user_metadataが返却値として表示されていれば、確認完了です。

Screenshot 2023-11-10 at 20.31.26.png

ちなみに、Auth0のB2C無料プランでは、アクションは3つまで作成することができるようです。
Auth0は大変便利なサービスですね〜!

Screenshot 2023-11-10 at 20.37.53.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?