ChatGPT解决这个技术问题 Extra ChatGPT

OAuth 2.0 授权标头

我想开发一个封装 OAuth 2.0 功能的 SDK。我检查了 OAuth 1.0 和2.0,我对授权头(1.02.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 功能,所以我不想介绍第三方库。

J
Jonathan

对于那些正在寻找如何在标头中传递 OAuth2 授权(访问令牌)的示例(而不是使用请求或正文参数)的人,这是如何完成的:

Authorization: Bearer 0b79bab50daca910b000d4f1a2b675d604257e42

对于遇到此线程尝试将授权标头与 cURL 一起使用的任何人,命令如下:curl -H "Authorization: Bearer $ACCESS_TOKEN" URI
快速的问题,因为我一直看到这样的答案,但没有澄清:如果我在代码中执行此操作(通过 HTTPRequest API),我会在我的请求中添加标头,并带有标头名称和关联的数据字段。在这个答案中,哪个部分是标题的名称,哪个是数据?也就是说,是标头 Authorization: Bearer0b...42 作为数据,还是标头 Authorization:Bearer 0b...42 作为数据,还是什么?谢谢! (顺便说一句,如果重要的话,我是 Oauth2。)
Authorization 是标头名称,冒号将名称与 section 4.2 of RFC2616 中所有标头中的值分开。
C
Community

您仍然可以将 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 访问令牌。


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)并且未在实践中使用。

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅