19

OAuth2で、要求された付与タイプが「コード」の場合、コールバックはクエリ文字列パラメーター(「?」の後)にそれを含むことに注意してください。ただし、付与が「トークン」の場合、フラグメントとして渡されます(「#」の後)。

これは仕様の一部のようです(https://datatracker.ietf.org/doc/html/draft-ietf-oauth-v2-26#section-4.2

そのような決定の背後にある理論的根拠は何でしょうか?

ありがとう、Piotr

4

1 に答える 1

20

ブラウザがWebサイトによってクエリパラメータを含むURLにリダイレクトされると、クエリ文字列もブラウザがホストに送信するリクエストの一部になります。フラグメントは、Webブラウザーによってローカルでのみ評価され、ホストへの要求には含まれません。

通常はWebアプリケーションがあり、プロバイダーと直接通信する認証コード付与の場合、データをホストに送信することがまさに必要なものです。

  • Webアプリケーションは、ログインするプロバイダーにブラウザーをリダイレクトします。
  • プロバイダーは、ブラウザーにWebアプリケーションのコールバックURLを通知し、認証コードを追加します。このコードはWebアプリケーションに送信する必要があるため、コールバックURLへのリクエストにクエリパラメーターとして含まれています。
  • Webアプリケーション自体がバックグラウンドでプロバイダーと通信し、認証コードを使用して、プロバイダーにアクセストークンを照会することが実際に許可されていることを確認します。

Implicit Grantの場合、通常、ブラウザで直接実行されているJavascriptアプリケーションがあります。ブラウザのJSはプロバイダーと直接通信できるため、認証コードをホストに渡す必要はなく、ほとんどの場合、アクセストークンをホストに送信する必要もありません。このようにして、たとえば、サーバーがユーザーの機密データにアクセスすることのないユーザーの同意を得て、別のプロバイダーから照会された情報を使用するWebサイトをサーバー上に作成できます。(信頼できるWebサイトの場合、アクセストークンはサーバーに送信されません。)

于 2013-02-05T22:54:41.010 に答える