OAuth 2.0 授权标头
Posted
技术标签:
【中文标题】OAuth 2.0 授权标头【英文标题】:OAuth 2.0 Authorization Header 【发布时间】:2012-06-19 14:22:37 【问题描述】:我想开发一个封装 OAuth 2.0 功能的 SDK。我检查了 OAuth 1.0 和 2.0 之间的差异,我对授权标头(1.0 和 2.0),OAuth 1.0 协议参数可以使用 HTTP“授权”标头传输,但我在当前的 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,我不是在为 OAuth 开发 SDK,我只是在我的 SDK 中需要一些 OAuth 功能,所以我不想引入第三方库。 【参考方案1】:您仍然可以在 OAuth 2.0 中使用 Authorization 标头。在 Authorization 标头中指定了一个 Bearer 类型,用于与 OAuth 不记名令牌一起使用(这意味着客户端应用程序只需提供(“bear”)令牌)。标头的值是客户端从授权服务器收到的访问令牌。
在本规范中有记录: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 (tools.ietf.org/html/rfc6749#section-7.1) 不幸的是,MAC 从未完全标准化(请参阅过期的规范草案:tools.ietf.org/html/draft-ietf-oauth-v2-http-mac-05)并且未在实践中使用。【参考方案2】:对于那些正在寻找如何在标头中传递 OAuth2 授权(访问令牌)的示例(而不是使用请求或正文参数)的人,这是如何完成的:
Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42
【讨论】:
对于遇到此线程尝试使用带有 cURL 的授权标头的任何人,这里是命令:curl -H "Authorization: Bearer $ACCESS_TOKEN" URI
快速提问,因为我一直看到这样的答案,但没有澄清:如果我在代码中执行此操作(通过 HTTPRequest API),我会在我的请求中添加标头名称和相关的数据字段。在这个答案中,哪个部分是标题的名称,哪个是数据?也就是说,标题Authorization: Bearer
与0b...42
作为数据,还是标题Authorization:
与Bearer 0b...42
作为数据,还是什么?谢谢! (顺便说一句,如果重要的话,我是 Oauth2。)
Authorization
是标头名称,冒号将名称与所有标头中的值分开,按照section 4.2 of RFC2616。以上是关于OAuth 2.0 授权标头的主要内容,如果未能解决你的问题,请参考以下文章