OAuth 2.0授权标头


91

我想开发一个包含OAuth 2.0功能的SDK。我已经检查了OAuth 1.0和2.0之间的区别,并且对Authorization Header(1.02.0)有些困惑,可以使用HTTP“ Authorization”标头传输OAuth 1.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"

没有回答您的问题,但是已经有许多OpenId和OAuth库,您确定要重新发明轮子吗?
凯恩2012年

嗨,凯恩,我不是为OAuth开发SDK,我只需要在SDK中提供一些OAuth功能,所以我不想介绍第三方库。
JKhuang 2012年

Answers:


205

对于那些正在寻找如何在标头中传递OAuth2授权(访问令牌)的示例(而不是使用request或body参数)的示例,请按以下步骤操作:

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42

32
对于遇到此线程并尝试将授权标头与cURL一起使用的任何人,以下命令: curl -H "Authorization: Bearer $ACCESS_TOKEN" URI
Blake G

5
快速提问,因为我一直在看到类似这样的答案,但没有澄清:如果我在代码中执行此操作(通过HTTPRequest API),则会向请求添加标头,标头名称和关联的数据字段。在此答案中,标题的名称是哪一部分,数据是什么?也就是说,标头Authorization: Bearer0b...42作为数据,还是标头Authorization:Bearer 0b...42作为数据,还是什么?谢谢!(顺便说一句,如果有关系,我是Oauth2。)
Olie

9
Authorization是标头名称,按照RFC2616的4.2节,冒号将名称与所有标头中的值分隔开。
里克·麦克·吉利斯

35

您仍然可以在OAuth 2.0中使用Authorization标头。在Authorization标头中指定了一种Bearer类型,以与OAuth Bearer令牌一起使用(这意味着客户端应用程序只需提供(“承担”)令牌)。标头的值是客户端从授权服务器收到的访问令牌。

此规范中对此进行了记录: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访问令牌。


OAuth 2.0记录了两种访问令牌类型作为示例:Bearer和MAC(tools.ietf.org/html/rfc6749#section-7.1
Clauds,

1
不幸的是,MAC从未完全标准化(请参阅过期的规范草案:tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05),并且实际上没有使用。
Scott T.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.