ベストプラクティス
ユーザーの認証方法を設計する際にセキュリティとユーザーエクスペリエンスの両方を考慮することは重要です。複数のプライマリ要素を提供し、および/または認証中に複数の要素を強制することで、両方を提供できます。- ユーザーがどこで資格情報を入力するのか
- ユーザーに関する資格情報の安全性をどのようにして確保するのか
- 認証システムをどのようにして維持するのか
- ユーザーにパスワード認証をどのようにして提供できるのか
- ハッカーがユーザーと偽ってログインすることをどのようにして防ぐのか
- 異なる種類のアプリケーションで、どのようにして認証を実装するのか
- 異なる言語を使用するユーザーのために、どのようにしてログインしやすくできるのか
- レガシーの認証システムから移行する際に、どのようにして良好なユーザーエクスペリエンスを提供するのか
- アプリケーションをAuth0と統合する際に、どのようなことを考慮するべきなのか
- ユーザーは既存のソーシャル(FacebookやGoogleなど)アカウントを使ってログインできるのか
- 多要素認証(MFA)を提供する必要があるのか
- ユーザーが事前にログインする方法をサービスが提供できない場合にはどうするのか
- ユーザーについて、同じアクセストークンを1つのAPIから別のAPIへ渡すことができるのか
ユニバーサルログイン
ベストプラクティス
1つ以上のアプリケーションがある場合、ベストプラクティスは、「一元化された場所」にリダイレクトし、ユーザーを認証することです。Auth0を使用する場合、これはユニバーサルログインを活用することを意味します。SSOを含む多くのセキュリティとユーザーエクスペリエンスの利点が、すぐに利用できます。- アプリケーションからのリダイレクトがいつどのようにして行われるかを決めます。
- Auth0の構成で、適切なブランディングやHTMLのカスタマイズをセットアップします。
- 認可サーバーから応答を受け取って処理するように、アプリケーションをセットアップします。
ユーザー名とパスワードの認証
ベストプラクティス
一元化されたログインページでのみ資格情報を収集することで、ユーザーの機密情報が漏洩する可能性を減らすことができます。不要に資格情報を収集する必要性を減らすこともできます。詳細は「ユニバーサルログイン」をご覧ください。アプリケーション統合
匿名アクセス
- すでにログインしたことがあり、アプリケーションに戻って来ている
-
アプリケーションに初めてアクセスしている
- 同じAuth0テナントを使用した別のアプリケーションにすでにアクセスしたことがあるか
- これまでに(または最近)そのデバイスまたはブラウザーを使って認証したことがあるか
保護されたエンドポイントにディープリンクする
ベストプラクティス
ほとんどの新しい認証フレームワークは、Auth0などの認可サーバーにリダイレクトするためのミドルウェアをサポートしています。選択する際には、以下の点を考慮してください。- 機密クライアント、非機密クライアント、またはその両方のサポート
- [検出エンドポイント](https://auth0.com/docs/ja-jp/get-started/applications/configure-applications-with-oidc-discovery 「OIDC Discoveryでアプリケーションを構成する」)または明示的なインラインを使った構成のサポート
- 有効期限、署名、クレーム、およびスコープを含むトークン検証のサポート
- 必要であれば、のサポート
ユーザーを認証する
- 共有のAPIを呼び出すのにアクセストークンも必要なのか
- アプリケーションがシングルページアプリケーション(SPA)で、IDトークンのみが必要なのか。詳細については、「PKCEを使った認可コード付与」を参照してください。
- アプリケーションがネイティブアプリケーション(モバイルまたはデスクトップ)か、そして/またはリフレッシュトークンが必要なのか。詳細については、「PKCEを使った認可コード付与」を参照してください。
攻撃の防御
レガシーシステムを使ったSSO
- レガシーのSSOシステムに既存のIDプロバイダーを更新して、ログイン(SAMLを使うなど)はAuth0にリダイレクトする
- ログインでは、Auth0がレガシーのSSOシステムにリダイレクトする。これには、レガシーシステムをAuth0でとして構成(SAMLまたはOIDCを使用)する必要があります。
ベストプラクティス
旧来のシステムでSSOエクスペリエンスに対応するのは、複雑になる場合がありますが、Auth0と統合する際によりシームレスなユーザーエクスペリエンスを創り出すという点において行う価値があるでしょう。この方向に進む予定でしたら、早めに計画を立てることで達成が可能になります。まだ一元化されたサービスにSSOを導入されていない場合は、追加に伴う複雑さが利益に見合わない可能性が高いです。ベストプラクティス
ソーシャルは素晴らしい機能ですが、1つ以上のサインイン方法を提供するのであれば、顧客が実際に複数の方法でサインインする可能性を考慮する必要があります。デフォルトでは、Auth0のすべてのユーザーIDにはそれぞれユーザープロファイルがあります。したがって、1つのユーザープロファイルを複数のIDと関連付ける効果的な方法として、Auth0のユーザーアカウントをリンクする機能を考慮することが適切でしょう。多要素認証(MFA:Multi-factor authentication)
ベストプラクティス
顧客向けアプリケーションでは、ユーザーに第二要素の追加を「強制」するのではなく、選択肢として提供することが非常に一般的です。詳細は、「ユーザーにMFAを追加するオプションを提供する」をご覧ください。- Auth0 Guardian:プッシュ通知の生成、そして、要求の許可と拒否を扱うアプリケーションを両方提供するサービスです。プッシュはユーザーの登録済みデバイス(一般的に携帯電話やタブレット)に通知を送信します。ユーザーはボタンを押すだけで、デバイスから即座にアカウントへのアクセスを許可または拒否することができます。
- 時間ベースのワンタイムパスワード(TOTP):デバイスでGoogle Authenticatorなどのアプリを利用して、一度限りのパスワードを生成します。生成されるパスワードは一定期間で切り替わり、ユーザーアカウントを検証する第二要素として入力することができます。
- SMS:SMSでワンタイムコードを送信します。ユーザーが認証を完了するには、このコードを入力する必要があります。
- 音声:電話での通話を使ってワンタイムコードを提供します。ユーザーが認証を完了するには、このコードを入力する必要があります。
- Duo:多要素認証にDuoアカウントを使用できるようにします。
- メール:多要素認証にメールアカウントを使用できるようにします。