2012-06-17 247 views
64

我想開發一個封裝了OAuth 2.0功能的SDK。我已經檢查了OAuth 1.0 & 2.0之間的差異,並且我對授權標題(1.02.0)有些疑惑,但可以使用HTTP「授權」標頭傳輸OAuth 1.0協議參數,但我無法在目前的OAuth 2.0草案。OAuth 2.0授權標頭

OAuth 2.0是否支持授權標頭?

在OAuth的1.0你的頭看起來像:

Authorization: OAuth realm="Example", 
    oauth_consumer_key="0685bd9184jfhq22", 
    oauth_token="ad180jjd733klru7", 
    oauth_signature_method="HMAC-SHA1", 
    oauth_signature="wOJIO9A2W5mFwDgiDvZbTSMK%2FPY%3D", 
    oauth_timestamp="137131200", 
    oauth_nonce="4572616e48616d6d65724c61686176", 
    oauth_version="1.0" 
+0

不回答你的問題,但已經有一些OpenId和OAuth庫,你確定你想重新發明輪子嗎? – Kane

+0

嗨凱恩,我沒有爲OAuth開發SDK,我只需要在SDK中使用一些OAuth函數,所以我不想引入第三方庫。 – JKhuang

回答

20

你仍然可以使用Authorization頭使用OAuth 2.0。在授權標頭中指定的承載類型與OAuth承載令牌一起使用(意味着客戶端應用只需呈現(「承載」)令牌)。頭部的值是客戶端從授權服務器接收到的訪問令牌。

它記錄了該規範:https://tools.ietf.org/html/rfc6750#section-2.1

例如爲:

GET /resource HTTP/1.1 
    Host: server.example.com 
    Authorization: Bearer mF_9.B5f-4.1JqM 

mF_9.B5f-4.1JqM是您的OAuth訪問令牌。

138

對於那些尋找如何在報頭中傳遞的OAuth2授權(訪問令牌)(而不是使用請求或身體參數)的示例,這裏是它是如何做:

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42 
+26

對於任何遇到此線程嘗試使用cURL授權標頭的人,下面是命令:'curl -H「授權:承載$ ACCESS_TOKEN」URI' – ChitownDev

+4

快速的問題,因爲我一直看到像這樣的答案,但沒有澄清:如果我在代碼(通過HTTPRequest API)中執行此操作,我將標題添加到我的請求中,並帶有標題名稱和關聯的數據字段。在這個答案中,哪個部分是標題的名稱,以及哪個數據?也就是說,是以'0b ... 42'作爲數據的標題'Authorization:Bearer',還是以'Bearer 0b ... 42'作爲數據的標題'Authorization:',或者是什麼?謝謝! (順便說一下,我是Oauth2,如果它很重要的話)。 – Olie

+5

'Authorization'是標題名稱,冒號將所有標題中的值與[RFC2616的第4.2節](http://docs.huihoo.org/)中的值分開。 COM/HTTP/RFC2616-HTTP-1.1/RFC2616-sec4.html)。 –