OAuth 2.0授权头部

103
我希望开发一个SDK,封装OAuth 2.0功能。我已经查看了OAuth 1.0和2.0之间的差异,并且对授权头部(1.02.0)有一些困惑。在OAuth 1.0协议参数可以使用HTTP“Authorization”头传输,但我在当前的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库存在了,你确定要重新发明轮子吗? - Kane
嗨,Kane,我不是在开发OAuth的SDK,我只需要在我的SDK中使用一些OAuth函数,所以我不想引入第三方库。 - JKhuang
3个回答

226

对于那些想要了解如何在头部传递OAuth2授权(访问令牌)的例子(而不是使用请求或请求体参数),以下是实现方式:

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42

36
如果有人通过这个帖子尝试使用 cURL 和授权头部,以下是命令:curl -H "Authorization: Bearer $ACCESS_TOKEN" URI。请注意,此处的 ACCESS_TOKEN 需要替换为您自己的访问令牌。 - Blake G
7
快速问题,我经常看到这样的答案,但没有解释:如果我通过 HTTPRequest API 在代码中执行此操作,我将在请求中添加标题名和相关数据字段。在此答案中,哪部分是标题名,哪部分是数据?也就是说,标题是 Authorization: Bearer,数据是 0b...42,还是标题是 Authorization:,数据是 Bearer 0b...42,还是其他什么?谢谢!(顺便说一下,我是 Oauth2,如果有影响的话。) - Olie
11
“Authorization” 是标头名称,在所有标头中,如RFC2616第4.2节所述,冒号将名称与值分开。 - Rick Mac Gillis

40

在OAuth 2.0中,您仍然可以使用Authorization header。在Authorization header中指定了Bearer类型,用于OAuth承载令牌(这意味着客户端应用只需提供("bear")令牌)。header的值是客户端从授权服务器收到的访问令牌。

它在这个规范文档中有详细说明:https://www.rfc-editor.org/rfc/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两种访问令牌类型列为示例。(https://tools.ietf.org/html/rfc6749#section-7.1) - Clauds
1
不幸的是,MAC从未完全标准化(请参见过期的草案规范:https://tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05),并且在实践中并未被使用。 - Scott T.

0

我想强调一下,您可以在标题值中使用“属性扩展”来自动化您的过程。

(实际上,我也使用属性传输将令牌传输到我的TestSuite属性中,然后如您所见使用“${#TestSuite#token}”返回它)

例如:

property expension

来源:

最好的问候社区!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接