Auth0のCustom Email ProviderにAmazon SESを使う #Auth0JP

Auth0でメールを送る機会

認証/認可サービス「Auth0」では、サインアップやサインイン、あるいはユーザーに対する通知などを行う際にユーザーにメールを送信する機会があります。

  • メール認証(登録されているメールがユーザーのものか確認する)
  • 二要素認証および二段階認証
  • パスワードレス
  • 不正アクセス検知

メールを送信する際のメールプロバイダですが、デフォルト設定ではAuth0が用意しているプロバイダを使うことができるようになっています。しかしながら本番運用で利用されることは想定されていません。

ということで本記事ではAmazon SESをCustom Email Providerとして使う方法を解説します。

Auth0の公式ドキュメント的には以下あたりもあわせてご覧ください。

Custom Email Provider

本番運用でメールを送信する手段として、Custom Email Providerという形でいくつかのメールプロバイダが連携可能です。

  • Amazon SES
  • Mandrill
  • Twilio SendGrid
  • SparkPost
  • Other SMTP (e.g., Gmail, Yahoo)

このうち、Amazon SESを使う場合は2つの方法が取れます。

  • Amazon SES : SESに送信可能なIAM Userを作成し、認証情報を登録する
  • Other SMTP : SESからSMTP用の認証情報を作成し、登録する

このうち、本記事では前者のAmazon SESのAPIを使う方法を解説します。

Amazon SESのAPIを使う方法

Amazon SESの設定とIAM Userの作成

まずAmazon SESのManagement ConsoleのEmail Addressesで自分のメールアドレスを登録・承認しておきます。ここで登録したメールアドレスからAmazon SES経由でメールが届く形になります。

次にIAM Userを作成します。IAM Userの作り方は一般的な方法と変わりませんので、本記事では割愛します。

Policyは次のようにします。ses:SendEmailses:SendRawEmail の権限を与えます。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "ses:SendEmail",
                "ses:SendRawEmail"
            ],
            "Resource": "*"
        }
    ]
}

IAM User作成後、Access key IDとSecret access keyをメモしておきます。

Auth0への設定

Auth0の設定は非常に簡単です!左メニューよりEmailsProviderを開きます。AWSのロゴがあるのでクリックして選択します。

設定値は以下の通りです。

設定項目 説明
From 送信元の名前とメールアドレス
Access key Id IAM UserのAccess key Id
Secret access key IAM UserのSecret access key
Region 設定したAmazon SESのリージョン

以上で設定が完了です。

試す

Auth0のAmazon SESの設定画面の下部にSEND TEST EMAILボタンがあります。こちらをクリックすると、Auth0 Dashboardにログイン中のユーザーに対してテストメールを送ることができます。疎通確認ができるというわけです。

正しく設定ができていると、下図のようなメールが受信できます。

Amazon SESを使うと簡単にメールプロバイダを用意できる

「メールプロバイダの用意」となると面倒なイメージを持ちますが、Amazon SESを使うと非常に簡単に用意することができます。Auth0を本番運用する際に、ぜひ参考にしてみてください。