[Auth0] Authentication APIを使用してユーザーにパスワードリセットメールを送信する

2021.06.17

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、CX事業本部の若槻です。

認証管理プラットフォームAuth0では、Authentication APIを使用することにより、プログラムからユーザー単位の認証周りの管理を行うことができます。

今回は、Authentication APIを使用してユーザーにパスワードリセットメールを送信してみました。

やってみた

掲題の操作を行う方法ですが、当初利用を考えていた Management API の Node SDK には該当のメソッドがありませんでした。下記のcreatePasswordChangeTicketが近そうでしたがこれ単体ではパスワードリセットメールの送信は出来ないようです。

よって代わりに下記の Authentication API をAxiosで直接叩いてパスワードリセットを行ってみました。

コードは下記となります。Node.jsで実行します。

const Axios = require('axios');

const AUTH0_TENANT_DOMAIN = "AUTH0_TENANT_DOMAIN";
const CLIENT_ID = "CLIENT_ID";
const EMAIL = "EMAIL";
const CONNECTION = "Username-Password-Authentication";

const changePassword = async () => {
  await Axios.post(
    `https://${AUTH0_TENANT_DOMAIN}/dbconnections/change_password`,
    {
      client_id: CLIENT_ID,
      email: EMAIL,
      connection: CONNECTION,
    },
    { headers: { "Content-Type": "application/json" } }
  );
};

changePassword()

上記を実行すると、メールアドレスにパスワードリセットを要求するメールが届きました。ユーザーは本文に記載のURLリンクを開きます。

パスワードリセット画面が開くのでリセットを行います。

パスワードリセット成功画面へ遷移し、リセットが行えました。

おわりに

Authentication APIを使用してユーザーにパスワードリセットメールを送信してみました。

同様の実装はユーザー作成時であればHooksを使っても行えそうですが、Auth0 の API を使用するバックエンドの仕組みがすでにあるのであれば今回の方法でも良さそうですね。

以上