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

89
我一直在使用 Oauth,但从来没有完全确定这四个术语之间的区别(以及每个术语的功能)。我经常在 Twitter Public API 中看到这些字段:
Consumer key(消费者密钥):
Consumer secret(消费者密钥密钥):
Access token(访问令牌):
和 Access token secret(访问令牌密钥):
但我从来不知道它们确切的作用。我知道Oauth有授权应用程序的能力(让其代表用户行动),但我不了解这四个授权术语之间的关系,希望得到解释。
基本上,我不确定访问令牌或密钥是如何生成的、它们存储在哪里以及它们彼此之间或与消费者密钥和密钥密钥之间的关系是什么。
谢谢

这可能会有所帮助:https://dev59.com/1nE85IYBdhLWcg3whDzj - Prabakar K
2个回答

95

Consumer key是由服务提供商(如Twitter、Facebook等)颁发给消费者(希望访问用户在服务提供商上的资源的服务)的API密钥。这个密钥用于标识消费者。

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

Access token是服务提供商在消费者完成授权后向其颁发的令牌。该令牌定义了消费者对特定用户资源的访问权限。每次消费者想要从服务提供商访问用户数据时,消费者都会在API请求中包含访问令牌。

希望这能澄清问题。我建议浏览一下oAuth 2.0规范的开头部分,它非常有启发性。


1
我不明白的是,在我的 Twitter 应用程序中,所有这些都已经提供了(这意味着我不需要通过服务器进行身份验证以获取访问令牌,因为我在注册 Twitter 应用程序时就已经拥有了它)。我以为你说我需要在获得访问令牌之前进行身份验证? - Startec
6
Twitter 允许您为自己(特别是您的账户)生成访问令牌,以便您可以进行测试。但是,对于使用您的应用程序的其他用户,只有在用户经过身份验证后才能获取该用户的访问令牌。 - Hen Sapir
如果您想从用户的 Twitter 帐户中获取信息,每次都需要让他们登录/验证吗?哪些信息(令牌/密钥)可以保存以供将来请求使用?-- 可以使用相同的访问令牌/访问密钥吗? - MattOlivos
@HenSapir,我不同意你对“访问令牌密钥”的描述。我不知道它是什么意思,它不是一个标准术语,但我知道“访问令牌密钥与访问令牌一起发送”这种说法是错误的。只有访问令牌被发送。我怀疑有人在说“访问令牌密钥”时实际上是指“访问令牌,它是一个秘密”。 - Elroy Flynn
1
请注意,“consumer”这个术语已经过时。OAuth规范使用“client”这个术语。这在https://tools.ietf.org/html/rfc5849的1.1节中有说明。 - Elroy Flynn
遗憾的是,问题的一部分仍未得到解决:即“访问令牌密钥”的解释。 - Michael

13

有两种身份验证方式,第一种称为身份验证,它使用消费者密钥和消费者密钥来识别此客户端并确保它是有效的帐户;第二种称为授权,它允许资源服务器确定您对数据或资源(我们所说的资源)具有哪些权限进行哪种操作。此操作使用访问令牌和访问令牌密钥。

更多详细信息,请查看谷歌公司这个有用的幻灯片:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接