私はOpenIDConnect認証を調べており、「単純なCORS」または「複雑なCORS」のいずれかが認証または承認中に活用されるかどうかを判断しようとしています。
背景
単純なCORS(プリフライトなし)には、以下が含まれます。
HTTPメソッド:
そして、コンテンツタイプ
サーバーが提供されますAccess-Control-Allow-Origin
レスポンス内
他のXヘッダーまたはメソッドは、preflight
OPTIONSリクエストになります。
質問
OAuthフライト前リクエストを使用する方法でCORSを活用していますか?(OpenID Connectに関する情報が望ましいですが、OAuthの実装は興味深いです)
OAuthの形式は、飛行前のリクエストがないCORSを利用しますか?
OAuth IDプロバイダー、または証明書利用者/リソースにセキュリティ上の脆弱性を引き起こすCORSの構成はどれですか?
OpenIDについてはわかりませんが、OAuthの場合、実際の認証部分にはCORSは含まれませんが、接続しているクライアントの種類によってはリソースサーバーで必要になる場合があります。
OAuth 2フレームワークを定義する RFC 6749 では、アプリケーションが認証を取得するために定義された4つの異なるメソッドがあります(ここで、クライアントはアクセスしたいサーバーを意味します)データ、リソースの所有者、エンドユーザーは、データの所有者、データへのアクセスを許可する人、ホストは、承認とAPIエンドポイントを提供するエンティティを意味します。
認証コードメソッドを使用する場合、認証フローの高レベルの概要は、クライアントがホスト上の認証ページにユーザーをリダイレクトすることです。エンドユーザーがアクセスを許可すると、クライアントのサイトにリダイレクトされます。リクエストを受信すると、クライアントのサーバーはホストにリクエストを出し、一時トークンを永久トークンに交換します。これを使用して、サーバーからAPIリクエストを行います。
この方法では、すべての要求がクライアントのサーバーからホストサーバーに対して行われるため、CORSは必要ありません。エンドユーザーのブラウザーで行われる唯一の要求はリダイレクトであり、CORSの影響を受けません。
implicitメソッドを使用する場合、アクセスを許可した後にエンドユーザーがリダイレクトされると、永続的なコードは、エンドユーザーのブラウザーで実行されている(JavaScript)スクリプトによってURLから取得されます。クライアントのウェブサイト。このコードは、ブラウザで実行されているJavaScriptスクリプトによってAPIにアクセスするために使用されます。
CORSは、このメソッドで実際のAPIエンドポイントに使用する必要があります(要求がいずれにしてもCORSを必要とする場合-OAuthを使用して認証されることについて特別なことは何もないため、GET要求にはCORSは必要ありませんが、DELETE要求には必要です)。ユーザーのブラウザからアクセスします。ただし、認証フローはCORSを必要としません。これも、クロスオリジンリクエストではなくリダイレクトを使用して処理されるためです。