什么是访问令牌与访问令牌密钥以及消费者密钥与消费者密钥


78

我使用Oauth已有一段时间了,但从未完全确定这四个术语(以及每个术语的功能)之间的区别。我经常看到(例如在Twitter Public API中)

Consumer key:

Consumer secret:

Access token:

Access token secret:

领域,但我从未确切知道他们在做什么。我知道Oauth可以对应用进行授权(让它们代表用户运行),但是我不理解这四个授权条款之间的关系,因此不愿意解释。

基本上,我不确定访问令牌或令牌密钥是如何生成的,它们的存储位置以及它们之间或与使用者密钥和密钥之间的关系。

谢谢


Answers:


78

使用者密钥是服务提供商(Twitter,Facebook等)发布给使用者(要访问服务提供商上用户资源的服务)的API密钥。该密钥确定了消费者。

消费者机密是消费者“密码”,它与消费者密钥一起用于从服务提供商请求访问(即授权)用户资源。

访问令牌是一旦消费者完成授权后服务提供商向消费者发出的令牌。该令牌定义使用者对特定用户资源的访问特权。每次消费者希望从该服务提供商访问用户数据时,消费者都会在对服务提供商的API请求中包含访问令牌。

希望能清除它。我建议浏览oAuth 2.0规范的开头。真的很有信息。


1
我没有得到的是,在我的Twitter应用程序中已经提供了所有这些功能(这意味着我不必通过服务器进行身份验证即可获得访问令牌,因为我在使用Twitter签署应用程序后就拥有了该令牌。以为您说我需要获得访问令牌之前需要先进行身份验证?
Startec,2015年

6
Twitter使您可以为自己(特别是您的帐户)生成访问令牌,以便您可以对其进行测试。但是,对于其他每个使用您的应用程序的用户,只有在该用户通过身份验证后,才能获取该用户的访问令牌。
亨·萨皮尔

如果要尝试从用户的Twitter帐户获取信息,是否必须让他们每次都登录/进行身份验证?您可以保存什么信息(令牌/密钥)以备将来使用?-您可以使用相同的访问令牌/访问密钥吗?
MattOlivos

@HenSapir,对于您对“访问令牌机密”的描述,我不同意。我不知道这是什么意思,它不是一个标准术语,但是我确实知道“访问令牌秘密与访问令牌一起发送”的情况并非如此。它不是。仅他访问令牌被发送。我怀疑有人说“访问令牌,这是一个秘密”时写了“访问令牌的秘密”
Elroy Flynn

注意,术语“消费者”是旧的。OAuth规范使用术语“客户端”。这在1.1节指出tools.ietf.org/html/rfc5849
埃尔罗伊·弗林

9

身份验证有两种,一种称为身份验证,它使用使用者密钥和使用者秘密来标识此客户端并确保它是有效帐户,第二种称为授权,它允许资源服务器识别哪种类型。在您有权处理数据或我们称为资源的操作中,此操作使用访问令牌和访问令牌密钥。

有关更多详细信息,请查看以下来自Google的有用幻灯片:

https://docs.google.com/presentation/d/1KqevSqe6ygWVj4U-wlarKU7-SVR79x-vjpR4gEc4A9Q/edit?pli=1#slide=id.g1697c74a_1_14

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.