redirect_uri を使用します。URI がデバイスのブラウザーで読み込まれると、通常はアプリケーションが自動的に開き、ユーザーはそのまま操作を続けられます。
従来、モバイルアプリケーションでは カスタム URI スキーム (例: com.mycompany.myapp://oauth2redirect) が使われてきました。しかし、カスタム URI スキームには、デバイス上の複数のアプリケーションが同じスキームを登録できてしまうというリスクがあります。モバイル OS には、リダイレクトを受け取るアプリケーションが意図したものであることを保証する組み込みの仕組みがありません。このような場合、悪意のあるアプリが正規のアプリケーションになりすまして認可レスポンス (トークンを含む) を受け取ってしまうおそれがあり、しかもユーザーはそれに気づけません。特に、以前の正規のセッションがあることでシングルサインオン (SSO) が有効になっている場合は、追加のユーザー操作が不要なため、このリスクはさらに高まります。こうしたケースでは、PKCE は実質的にあまり役に立ちません。悪意のあるアプリケーションでも、ユーザー操作なしでログインフローを開始し、コールバックを受け取るのを待ててしまうからです。
ローカルマシン上で動作するアプリケーション (例: デスクトップアプリ、CLI) も、コールバックにループバックインターフェース (例: http://127.0.0.1:51089/callback または http://localhost:61024/callback) を使用する場合、同様のリスクがあります。この場合、同じマシン上の別のアプリケーションが同じポートで待ち受けて、レスポンスを傍受できる可能性があります。
カスタム URI スキームとループバック URI は、いずれのケースでも認可サーバーが受信側のアプリケーションを検証できないため、総称して Non-Verifiable Callback URI と呼びます。
モバイルアプリケーション向けの推奨対策
検証済み HTTPS URI (Universal Links / App Links)
最新のモバイル OS は 検証済み HTTPS URI をサポートしており、これを使うと、自分で管理しているウェブサイトのドメインをモバイルアプリに関連付けることができます。検証済み HTTPS URI は、次の名称で知られています。- iOS では Universal Links
- Android では App Links
Auth0 は、すべてのネイティブアプリケーションで、リダイレクト URI として検証済み HTTPS URI を使用することを 強く推奨 しています。
- iOS: Support Universal Links を確認してください。
- Android: Android App Links を確認してください。
すべてのアプリケーションに推奨される緩和策
次の場合、Auth0 は認証トランザクションの結果を受け取るアプリケーションが正当なものかどうかを検証できません。- 古いモバイル OS バージョンとの互換性を維持する必要があり、アプリケーションが検証済み HTTPS URI をサポートできない
- アプリケーションがデスクトップアプリケーションまたは CLI アプリケーションである
- リクエストに含まれる
redirect_uriが、検証できない URI (つまり、カスタム URI スキームまたはループバック URI) を使用している。 - 現在のログイントランザクションで、ユーザーにまだ他の画面が表示されていない (たとえば、サードパーティアプリケーションで同意画面が表示される場合や、MFA が必要な場合) 。

プロンプトのカスタマイズ
確認プロンプトでは、サードパーティアプリケーション向けの既存の同意画面に対して定義した、カスタムのブランディングと設定が使用されます。詳しくは、Customize Universal Login Page Templates の Prompts セクションを参照してください。 確認プロンプトは、テナント全体の設定として、またはアプリケーションレベルで設定できます。アプリケーションレベルの設定は、テナント全体の設定より優先されます。 アプリケーションレベル- Auth0 Dashboard > アプリケーション > Application Settings > Advanced > OAuth に移動します。
- Non-Verifiable Callback URI End-User Confirmation 設定までスクロールします。
- プロンプトを有効にするにはトグルをオンにし、無効にするにはトグルをオフにします。

- Auth0 Dashboard > Settings > Advanced に移動します。
- Non-Verifiable Callback URI End-User Confirmation 設定を探します。
- プロンプトを有効にするにはトグルをオンにします。
