以下の仮定の下でOAuth対cookieベースのセッション(ユーザー名/パスワードで確立))に利点はありますか?
まあ、それは異なります...
OAuthは、セッションを作成するためのプロトコルです。 OAuthベアラートークンは、Authentication: Bearer
HTTPヘッダー。これは、httpヘッダー要素を介して送信される単なる暗号ナンスであり、実際にはcookie
httpヘッダー要素と(most)と同じです。
どう違うの?まあ、クッキーのルールは他のヘッダー要素とは少し異なります。 cookieはbrowserによって維持され、cookieが属するすべてのリクエストに添付されます。これが Cross-Site Request Forgery またはセッションライディング攻撃が機能する理由です。ブラウザはリクエストがどこから来たかを気にせず、リクエストの宛先に基づいてクッキーを添付します。
OAuthベアラートークンは少し異なります。これらのトークンは通常、クライアント(JavaScript、Flash、または一部のミドルウェアアプリケーション)によって管理されます。アプリケーションがJavaScriptを使用して認証ベアラートークンを管理する場合、この値はブラウザーによって自動的に適用されないため、CSRFトークンとしても機能します。 、すっきりしています。
ただし、ミドルウェアにOAuthを使用している場合、CSRFは機能しないため、ヘッダーのどこに表示されるかは関係ありません。
CSRFは、すべての最新のブラウザーによってすでに保護されています。宛先に基づいてCookieを添付するだけでなく、検証がサーバーに送信する前にOriginのポリシーを許可する場合、調査後にoauth2とセッションベースの認証はどちらも同じセキュリティになります。リスクと唯一の違いは、使用されているヘッダーです