Auth0でメールアドレスを検証する方法を調べてみた

Auth0でメールアドレスを検証する方法を調べてみました。
2022.01.12

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

Auth0では、メールアドレスの検証ができます。これにより、「メールアドレスが未検証のユーザをログインさせない」などが実現できます。

おすすめの方

  • Auth0でメールアドレスの検証をしたい方
  • Auth0でメールアドレスを検証する方法を知りたい方

Auth0のメールアドレス検証

本記事での扱い

メールアドレス検証方法とは、ユーザ情報のemail_verifiedtrueにする方法とします。

メールアドレスがverified

メールアドレスの検証の方法

2つの種類があります。

  • ユーザが検証リンクにアクセスして、検証OKにする
  • 管理側のアプリケーションで、検証OKにする

Auth0のRulesやActionsを使えば、Universal Loginでサインアップしたとき・ログインしたときに検証メールを送信することもできそうです。

本記事では、下記の5つを紹介します。

  1. ユーザ登録時、Auth0が検証メールを送信する。メール本文の検証リンクにユーザがアクセスしたら検証OKになる。
  2. ユーザ登録後、任意のタイミングでManagement APIを実行し、Auth0が検証メールを送信する。メール本文の検証リンクにユーザがアクセスしたら検証OKになる。
  3. ユーザ登録後、任意のタイミングでManagement APIを実行し、検証リンクを取得し、自分でユーザにメールを送信する。メール本文の検証リンクにユーザがアクセスしたら検証OKになる
  4. ユーザ登録時、email_verified:trueでユーザ登録する
  5. ユーザ登録後、任意のタイミングでManagement APIを実行し、検証OKにする

ユーザが検証リンクにアクセスして、検証OKにする

1. ユーザ登録時、Auth0が検証メールを送信する。メール本文の検証リンクにユーザがアクセスしたら検証OKになる。

Auth0のManagement APIを使ってユーザ登録を行います。このとき、verify_emailtrueにします。

{
  "email": "sample@example.com",
  "user_id": "any",
  "connection": "Username-Password-Authentication",
  "password": "password",
  "verify_email": true
}

これによって、Auht0から本人確認のメールが届きます。このVerify Linkにアクセスすることで、メールアドレスの検証がOKになります。

メールアドレス検証用のメール

メール内容の変更や日本語化もできます。

2. ユーザ登録後、任意のタイミングでManagement APIを実行し、Auth0が検証メールを送信する。メール本文の検証リンクにユーザがアクセスしたら検証OKになる。

Auth0のManagement APIを使ってユーザ登録を行います。そのあと、任意のタイミングで下記のAPIを実行します。

{
  "user_id": "auth0|any"
}

これによって、Auh0から本人確認のメールが届きます。このVerify Linkにアクセスすることで、メールアドレスの検証がOKになります。

3. ユーザ登録後、任意のタイミングでManagement APIを実行し、検証リンクを取得し、自分でユーザにメールを送信する。メール本文の検証リンクにユーザがアクセスしたら検証OKになる

Auth0のManagement APIを使ってユーザ登録を行います。そのあと、任意のタイミングで下記のAPIを実行します。

{
    "result_url": "http://localhost:3000",
    "user_id": "auth0|any"
}

下記のResponseを得るので、この検証URLを含んだメールを作成し、自分でユーザに送信します。

{
    "ticket": "https://your-tenant.auth0.com/u/email-verification?ticket=xxxyyyzzz"
}

ユーザが上記のVerify Linkにアクセスすることで、メールアドレスの検証がOKになります。 ユーザがリンクにアクセスする部分は同じですが、Auth0ではなく、自分でメール送信する部分が異なります。

管理側のアプリケーションで、検証OKにする

4. ユーザ登録時、email_verified:trueでユーザ登録する

Auth0のManagement APIを使ってユーザ登録を行います。このとき、email_verifiedtrueにします。

{
  "email": "sample@example.com",
  "user_id": "any",
  "connection": "Username-Password-Authentication",
  "password": "password",
  "email_verified": true
}

これによって、メール検証済みのユーザとして、ユーザ登録ができます。メール検証は、自分自身で行います。

5. ユーザ登録後、任意のタイミングでManagement APIを実行し、検証OKにする

Auth0のManagement APIを使ってユーザ登録を行います。そのあと、任意のタイミングで下記のAPIを実行します。

{
    "email_verified": true
}

これによって、ユーザデータをメール検証OKに更新します。メール検証は、自分自身で行います。

さいごに

どなたかの参考になれば幸いです。

参考