为与OAuth2.0兼容的库赞助人指定API,我偶然发现了OAuth范围.OAuth2.0规范似乎在某些方面有不同的解释,例如GitHub使用逗号分隔范围,而Google使用空格,如RFC 6749中所定义.RFC告诉:
如果发布的访问令牌范围与客户端请求的范围不同,授权服务器必须包含"范围"响应参数,以通知客户端授予的实际范围
但是后面的规范中没有提到范围响应参数.特别是我想实现资源所有者密码凭证授权(第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"
}
Run Code Online (Sandbox Code Playgroud)
我应该将范围包含为以空格分隔的列表,逗号分隔列表还是JSON文件?
{
"scope": [ "read", "write", "foobar" ],
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"token_type":"example",
"expires_in":3600,
"refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
"example_parameter":"example_value"
}
Run Code Online (Sandbox Code Playgroud)
小智 9
我对RFC 6749的解释是,范围应指定为包含空格分隔列表的字符串.由于缺乏一个例子,该标准对解释有些开放.
"scope": "read write foobar"
Run Code Online (Sandbox Code Playgroud)
RFC 6749第4.3.3节访问令牌响应说:
如果访问令牌请求有效且已获得授权,则授权服务器会发出访问令牌和可选的刷新令牌,如第5.1节所述.
RFC 6749第5.1节说:
范围可选,如果与客户要求的范围相同; 否则,需要.第3.3节描述的访问令牌的范围.
RFC 6749第3.3节说:
scope = scope-token*(SP范围标记)
| 归档时间: |
|
| 查看次数: |
1539 次 |
| 最近记录: |