2012-11-08 30 views
1

指定與OAuth2.0兼容的API for library patrons,我偶然發現OAuth scopes。該OAuth2.0的規格似乎在某些點有不同的解釋,比如GitHub uses commas劃定範圍,同時谷歌使用的空間,如RFC定義6749. RFC文檔講述:如何從OAuth2.0返回認可的示波器

如果發出的訪問令牌範圍 是不同的從客戶端請求的一個,授權 服務器必須包含「範圍」響應參數告知授予

實際的範圍,但沒有響應範圍參數後面的說明書中提到的 客戶端。特別是我想實施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" 
} 

回答

7

我對RFC 6749的解釋是應將範圍指定爲包含空格分隔列表的字符串。由於缺乏示例,該標準有些開放性。

"scope": "read write foobar" 

RFC 6749第4.3.3節訪問令牌響應說:

如果訪問令牌請求是有效的和授權,授權 服務器發出一個訪問中描述 令牌和可選的刷新令牌第5.1節。

RFC 6749第5.1節說:

範圍 OPTIONAL,如果與由客戶端請求的範圍; 否則,需要。訪問令牌的範圍如第3.3節所述的 。

RFC 6749第3.3節說:

範圍=範圍令牌*(SP範圍令牌)

+0

我從OAuth的名單這個問題的確認,的確是「空間分隔」。請參閱從http://www.ietf.org/mail-archive/web/oauth/current/msg12326.html開始的討論 – ankon