詳細情報:
API (OAuth 設定の有効化): 認証コードとログイン情報フローの設定
このコントロールでは、「認証コードとログイン情報フロー」の特定のセキュリティ要件を設定します。
コントロール名
接続アプリケーション: API (OAuth 設定の有効化): 認証コードとログイン情報フロー設定
推奨設定
[認証コードとログイン情報フロー] を有効にします。
[Web サーバーフローの秘密が必要] および [更新トークンフローの秘密が必要] を選択解除しないでください。
制御の概要
このコントロールでは、「認証コードとログイン情報フロー」の特定のセキュリティ要件を設定し、アプリケーションが「非公開クライアント」 (サーバー側) か「公開クライアント」 (ブラウザー/モバイル) かに基づいてクライアントの秘密を検証する必要があるかどうかを決定します。
設定されていない場合のセキュリティリスク
公開クライアントの秘密を誤って要求すると、ログイン情報が簡単に盗まれるフロントエンドコードにハードコード化されます。非公開クライアントの秘密を要求できなかった場合、攻撃者はアプリケーションの非公開鍵を必要とせずに傍受されたコードを交換できます。
脅威のシナリオ
攻撃者は、モバイルアプリケーションを逆コンパイルしてハードコードされたクライアントの秘密を抽出するか、サーバー側アプリケーションから認証コードを傍受して、交換に秘密が必要なかったため、高権限アクセストークンと交換します。
推定 CVSS スコア範囲
重大 (9.0 ~ 10.0)。
リスクの影響に関する考慮事項
設定に誤りがあると、クライアントログイン情報が侵害されるか、不正なセッションハイジャックが有効になり、機密データへの認証されていないアクセスが保持されます。
より高いリスク
セカンダリ防御として PKCE (Proof Key for Code Exchange) を使用しない高権限インテグレーションにフローが使用されている場合、または秘密がプレーンテキストのクライアント側リポジトリに保存されている場合。
低リスク
「非公開クライアント」が安全なサーバー側ヴォールトに保存されている秘密を厳密に適用し、「公開クライアント」が PKCE を使用して脆弱な共有秘密を必要とせずに交換を保護します。
ビジネスと統合に関する考慮事項
これを正しく実装するには、認証ハンドシェイクを中断せずに適切な「秘密」ポリシーが適用されるように、バックエンド駆動型アプリケーションとフロントエンド駆動型アプリケーションを明確に区別する必要があります。
推奨される修復
非公開/サーバー側クライアントの場合は、[Web サーバーフローの秘密が必要] と [更新トークンフローの秘密が必要] の両方を選択します。公開/モバイルクライアントの場合は、これらのオプションを選択解除して代わりに PKCE を実装します。
Security Health Review Guidance (セキュリティ状態レビューガイダンス)
Security Health Review では、秘密のセキュリティはクライアントによる保護機能に完全に依存することが強調され、共有秘密がブラウザーやモバイル環境に公開されないように義務付けられています。

