oauth2.0如何传递访问令牌

Posted

技术标签:

【中文标题】oauth2.0如何传递访问令牌【英文标题】:oauth2.0 how to pass access token 【发布时间】:2013-06-24 10:20:15 【问题描述】:

我正在努力将 OAuth2 集成到 REST API,我想知道我应该如何发送 access_token 参数请求。

示例: 我的服务器接受两条路线: POST /写 获取/读取

对于 /write,我应该把 access_token 放在 POST 中吗?curl http://api.localhost/write -d 'access_token=[ACCESS_TOKEN]'

对于 /read,我应该把它放在 GET 中吗?curl http://api.localhost/read?access_token=[ACCESS_TOKEN]

或者在这两种情况下,它都应该通过 POST 发送吗?

谢谢, 加西姆

【问题讨论】:

请注意,/write/read遵循 RESTful API 标准。资源名称应该是集合,而不是动词。 HTTP 已经有自己的一组动词。例如,如果您的 API 读取/写入文件,那么端点应该是 /filesGET 请求将读取文件,而 PUTPOST 应该创建一个文件。 (PUT 如果您的客户端指定 ID,POST 如果服务器指定) 【参考方案1】:

使用 OAuth,令牌通常在请求标头中传递。您可能希望对 POST 或 GET 尝试类似以下的操作:

发帖:curl http://api.localhost/write -H 'Authorization: Bearer ACCESS_TOKEN'

获取:curl http://api.localhost/read -H 'Authorization: Bearer ACCESS_TOKEN'

授权键/值对的值部分可能因 REST 服务提供商而异。以Github 为例,标头键/值对如下所示:

curl -H "Authorization: token your_token" https://api.github.com/repos/user/repo

您可能需要查阅网络服务提供商文档以了解详细信息。

【讨论】:

@user984832 是单词 Bearer 是关键字还是访问令牌的一部分 Bearer 是实施 OAuth 2 的网站经常使用的关键字。 你是如何从 api.localhost/read 切换到 api.github.com/repos/user/repo?? 带有 curl 的 POST 应该添加 -X : -X 选项指定与远程服务器通信时将使用哪种 HTTP 请求方法。

以上是关于oauth2.0如何传递访问令牌的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Oauth2.0 解码不透明的访问令牌

无法在跨客户端谷歌 oauth2.0 中交换访问令牌和刷新令牌的授权码

OAUTH2.0 不记名令牌不工作

OAuth2.0 令牌奇怪行为(Invalid Credentials 401)

如何在 Gatling 负载测试中为多个虚拟用户使用单个 OAuth2.0 令牌

如何使用 OAuth2.0 生成 XOAUTH 参数以与 Gmail IMAP 协议一起使用?