ユーザーから提供されたメールアドレスを使用する場合、そのユーザーが実際にそのメールアドレスを利用できることを確認することが重要です。これは、ユーザーにメールを送信する場合や、検索用のインデックスとしてメールアドレスを使用する場合に当てはまります。Auth0 では、ユーザーが本人であることを確認する手段としてメールアドレスを使用することは推奨していません。
メールアドレス確認は、次のようなアプリケーションで重要です。
- ユーザーを識別する主な方法の 1 つとしてメールアドレスを使用する
- ユーザーにメールを送信する
- アカウントリンクを提案するためにメールアドレスを使用する
- ユーザーがメールアドレスに紐付いたアカウントを作成できるようにする
Auth0 には、アプリケーションにメールアドレス確認を追加するための複数の方法があります。また、サインイン前にユーザーへメールアドレスの確認を必須にする Marketplace extension も提供されています。
メールアドレス確認によってアカウント侵害のリスクは軽減されますが、完全な解決策ではありません。アプリケーションによっては、ほかのセキュリティ対策も必要になる場合があります。
メールアドレスを確認済みまたは未確認としてマークする方法はいくつかあります。どの方法が適しているかを判断するために、自分やチームに次の質問をしてみてください。
- Auth0 (または Auth0 経由で接続されたデータベース) に識別子とパスワードを保存していますか。または保存する予定がありますか。
- Auth0 の組み込みのメールアドレス確認フローを使用できないような、特別なメールアドレス確認要件がありますか。
- 大量のユーザーを一括でメールアドレス確認済みに設定する必要がありますか。
- Azure AD、ADFS、またはその他のエンタープライズ接続からのユーザーがいて、それらのメールアドレス確認が必要ですか。
識別子とパスワードを Auth0 に保存している場合、または独自のシステムにユーザーを保存するためにカスタム DB 接続を使用している場合は、Auth0 の組み込みメールアドレス確認フローを利用できる可能性が高いです。
Auth0 の組み込みフローを使用できない要件がある場合や、大量のユーザーを一括で設定する必要がある場合は、それに対応するAPI エンドポイントを利用できます。
最後に、エンタープライズ接続のユーザーがいる場合は、それらの接続の一部で特別なメールアドレス確認ワークフローがサポートされています。詳しくは、特別な確認のサポートを参照してください。
Auth0 でメールアドレス確認を行う一般的な方法は、ユーザーにメールアドレス確認リンクを送信することです。ユーザーがそのリンクをクリックすると、ユーザーの email_verified フラグが true に設定されます。
デフォルトでは、Auth0 はユーザーのサインアップ時にメールアドレス確認リンクをメールで送信します。
Auth0 がメールアドレス確認メールを送信するタイミングはカスタマイズすることもできます。たとえば、メールアドレスを一括で確認する必要がある場合や、ユーザーが確認済みのメールアドレスを必要とするアクションを実行するまで確認を遅らせたい場合です。
ユーザーがメールアドレス確認メールを受け取るタイミングを制御する方法は 2 つあります。
ワンタイムパスワード (OTP) は、新規ユーザーのアカウント作成時に各ユーザーへメールで送信でき、すべてのユーザーのメールアドレス確認を確実に行えます。メールアドレス確認リンクは、メールスキャナーやユーザー自身によって意図せず確認される可能性があるため、OTP を使用すると、各ユーザーが実在するメールアドレスを自ら確認することを確実にできます。OTP を使用するには、テナントで Universal Login、柔軟な識別子、および Identifier-First ログイン を有効にする必要があります。
電話番号およびメールアドレス識別子の確認用 OTP トークンの有効期間は 900 秒です。
OTP を設定するには、Authentication > Database に移動して変更する接続を選択し、Attributes を開いて Email を見つけ、メニューボタンを選択して One-Time Password (OTP) を有効にします。
Management API を使用したカスタムまたは一括のメールアドレス確認
これはソーシャル接続とデータベース接続では機能しますが、エンタープライズ接続では機能しません。また、データがソーシャル IDプロバイダーから提供される場合、email_verified フィールドはその IDプロバイダーによって上書きされる可能性がある点に注意してください。
場合によっては、別の方法でメールアドレスを確認したいことがあります。たとえば、一括で確認したいユーザーの一覧がある場合や、自分で構築したカスタムワークフローを通じてユーザーのメールアドレスを確認する別の手段がある場合です。
そのような場合は、PATCH /api/v2/users エンドポイント を使用して、email_verified を true に設定できます。
Azure AD および ADFS のエンタープライズ接続では、Auth0 は一部のカスタム メールアドレス確認フローをサポートしています。これにより、他のシステムから来るユーザーのメールアドレスが確認済みであることを、正確かつ安全に確保できます。詳しくは、Azure AD および ADFS のメールアドレス確認を参照してください。