Auth0のMFA設定方法(SendGrid Email)

SendGrid EmailでAuth0のMFAを試してみた。

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

注意点:

1. Auth0でEmail MFAを唯一なMFAに設定することはできません。(今回の記事はPhone Messageをオンした前提です)

2. Email認証をしていないユーザーのログイン画面には、Email MFAの選択肢は表示されません。

概要

MFAを使うことで、もっと安全なログインフローになります。
今日はAuth0上でSendGridを使って、EmailのMFAをやってみようと思います。

今回の記事はPhone Message (SMS)をオンした前提とのブログなので、他のMFA方法をオンしていなければ、前回のAuth0 PasswordlessとMFAの設定方法(Twilio SMS)も確認してください。

事前準備

  • SendGridアカウント
  • 送信元としてのメールアドレス(受信用と同じとしても問題ない)
  • Auth0テナント
  • Auth0のSPAテンプレートアプリ(callback URLなどを正しく設定される状態)
  • Email-Passwordでログインするアプリのユーザーアカウント

手順

SendGridでAPI KEYの作成


SendGridのダッシュボードから、Settings -> API KeysCreate API Keyボタンで、新しいAPI Keyを作る画面に入ります。
 


Create API Key画面に、API Key Nameはご自由に入力していただいて、API Key PermissionsRestricted Accessにします。

 

Mail Send最大(Scroll Bar最後の丸を押す)に設定します。

 

そしてCreate&Viewボタンをしたら、API Keyが作られて、Secret Keyが表示されます。
このSecret Keyは一回しか表示しませんし、これからの設定にも使うので、安全な場所にメモしてもらいます。

 

もう一度API Keysのリストに入ってみたら、作られたAPI Keyを確認できます。(押しても、詳細画面にSecret Keyが表示しませんが)

SendGridでSingle Senderの認証

Emailを送るため、「From」のメールアドレスが必要なので、「そのメールアドレスはあなたが所有している」のを確認するため、Single Senderの認証を行います。

 

Get Started -> Create New SenderVerify a Single Sender -> Create New Senderで新しいSenderの登録画面に入ります。

 


Create a Sender画面に、必要な情報を入力し、CreateSenderが作成します。

 


Senderとしてのメールアドレスに認証メールが送られるので、Verify Single Senderを押して、特に問題が出なければ、このメールアドレスのSender認証は成功となるはず。
(Sender Authentication画面にVerifiedというマークが付けられています。)

 

Auth0にEmail Providerの設定

SendGridの設定が終わったら、Auth0テナントのBranding -> Email Providerに入って、Use my own email providerをオンにします。
そしてSendGridを選択します。

 

SendGrid Settingsの部分:
- Fromに先ほどSenderとして認証できたメールアドレスを記入する
- API KeyにメモしたSendGridAPI Key: Secret Keyを記入し、セーブします。

Auth0にMFAをオンにする


Security -> Multi-factor Authの入って、Emailをオンにしてもらいます。

 


画面の下にスクロールしたら、Define Policyの部分はRequire Multi-factor Auth: Alwaysにし、セーブします。

 

MFAでログインする


事前に用意したSPAで試してみます。
Email-Passwordでログインしたら、MFA画面に入ります。
Phone MessageはデフォルトのMFA方法なんですが、他の方法にEmailがあって、Emailを選択したら、認証コードがアカウントのメールアドレスに送られて、そのコードをログイン画面に入力し、Continueを押せば、ログインが成功となります。

 
 

以上です。