【问题标题】:How should approved scopes be returned from an OAuth2.0应如何从 OAuth2.0 返回已批准的范围
【发布时间】:2012-10-28 18:21:17
【问题描述】:

指定一个API for library patrons,与OAuth2.0兼容,我偶然发现了OAuth scopes。 OAuth2.0 规范在某些方面似乎有不同的解释,例如GitHub uses commas 用于分隔范围,而 Google 使用空格,如 RFC 6749 中所定义。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 数组?

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

【问题讨论】:

    标签: oauth-2.0


    【解决方案1】:

    我对 RFC 6749 的解释是,范围应指定为包含空格分隔列表的字符串。由于缺乏示例,该标准在某种程度上可以解释。

    "scope": "read write foobar"
    

    RFC 6749 第 4.3.3 节访问令牌响应说:

    如果访问令牌请求有效且授权,则授权 服务器如所述发出访问令牌和可选的刷新令牌 在第 5.1 节中。

    RFC 6749 第 5.1 节说:

    范围 可选的,如果与客户要求的范围相同; 否则,需要。访问令牌的范围为 由第 3.3 节描述。

    RFC 6749 第 3.3 节说:

    范围 = 范围令牌 *( SP 范围令牌 )

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-11-07
    • 2015-04-13
    • 1970-01-01
    • 1970-01-01
    • 2019-11-11
    • 2020-09-20
    • 2022-05-16
    • 1970-01-01
    相关资源
    最近更新 更多