4

OAuth2.0 と互換性のある図書館利用者向けの API を指定すると、 OAuth スコープに出くわしました。OAuth2.0 仕様は、RFC 6749 で定義されているように、Google がスペースを使用しているのに対し、 GitHub はコンマを使用してスコープを区切るなど、いくつかの点で異なる解釈をしているようです。RFC は次のように伝えています。

発行されたアクセス トークンのスコープがクライアントによって要求されたものと異なる場合、承認サーバーは「スコープ」応答パラメーターを含めて、付与された実際のスコープをクライアントに通知する必要があります。

ただし、スコープ応答パラメーターは仕様の後半で言及されていません。特に、 Resource Owner Password Credentials Grant (セクション 4.3.)を実装したいと考えています。この応答の例は、OAuth2.0 仕様に記載されています。

 HTTP/1.1 200 OK
 Content-Type: application/json;charset=UTF-8
 Cache-Control: no-store
 Pragma: no-cache

 {
   "access_token":"2YotnFZFEjr1zCsicMWpAA",
   "token_type":"example",
   "expires_in":3600,
   "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
   "example_parameter":"example_value"
 }

スコープをスペース区切りリスト、コンマ区切りリスト、または JSON arary として含める必要がありますか?

 {
   "scope": [ "read", "write", "foobar" ],
   "access_token":"2YotnFZFEjr1zCsicMWpAA",
   "token_type":"example",
   "expires_in":3600,
   "refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
   "example_parameter":"example_value"
 }
4

1 に答える 1

9

RFC 6749 の私の解釈では、スコープはスペースで区切られたリストを含む文字列として指定する必要があります。この標準は、例がないため、解釈の余地があります。

"scope": "read write foobar"

RFC 6749 セクション 4.3.3 アクセス トークン応答には次のように記載されています。

アクセストークンリクエストが有効で承認されている場合、セクション5.1で説明されているように、承認サーバーはアクセストークンとオプションのリフレッシュトークンを発行します。

RFC 6749 セクション 5.1 は次のように述べています。

クライアントによって要求されたスコープと同一の場合はオプション。それ以外の場合は、必須です。セクション 3.3 で説明されているアクセス トークンのスコープ。

RFC 6749 セクション 3.3 は次のように述べています。

スコープ = スコープ トークン *( SP スコープ トークン )

于 2012-11-09T15:50:57.590 に答える