2012-06-17 252 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)。 –