我想开发一个封装 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"
对于那些正在寻找如何在标头中传递 OAuth2 授权(访问令牌)的示例(而不是使用请求或正文参数)的人,这是如何完成的:
Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42
您仍然可以将 Authorization 标头与 OAuth 2.0 一起使用。在 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 访问令牌。
curl -H "Authorization: Bearer $ACCESS_TOKEN" URI
Authorization: Bearer
以0b...42
作为数据,还是标头Authorization:
以Bearer 0b...42
作为数据,还是什么?谢谢! (顺便说一句,如果重要的话,我是 Oauth2。)Authorization
是标头名称,冒号将名称与 section 4.2 of RFC2616 中所有标头中的值分开。