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 URIs(検証不能なコールバック URI)」と呼びます。これは、どちらのシナリオにおいても、認可サーバーがレスポンスを受信するアプリケーションを検証できないためです。
モバイルアプリケーション向けの推奨対策
クレーム済み HTTPS URI(Universal Links / App Links)
- iOS では Universal Links
- Android では App Links
Auth0 は、すべてのネイティブアプリケーションのリダイレクト URI としてクレーム済み HTTPS URI を使用することを強く推奨します。
- iOS の場合: Support Universal Links を参照してください。
- Android の場合: Android App Links を参照してください。
すべてのアプリケーションに推奨される対策
- 古いモバイル OS バージョンとの互換性要件により、アプリケーションが申告した HTTPS URI をサポートできない場合
- アプリケーションがデスクトップまたは CLI アプリケーションである場合
- リクエストに含まれる
redirect_uriが、検証不可能な URI(カスタム URI スキームやループバック URI など)を使用している場合。 - 現在のログイントランザクションにおいて、ユーザーに他のいずれの画面もまだ表示されていない場合(サードパーティ アプリケーション向けの 同意画面 が表示される場合や、MFA(多要素認証)が必要な場合など)。

プロンプトのカスタマイズ
- Auth0 Dashboard > Applications > Application Settings > Advanced > OAuth に移動します。
- Non-Verifiable Callback URI End-User Confirmation 設定までスクロールします。
- トグルをオンにしてプロンプトを有効にするか、トグルをオフにしてプロンプトを無効にします。

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