为什么需要为访问令牌交换授权的OAuth 1.0请求令牌?

Joe*_*haw 17 oauth

我想知道OAuth 1.0需要往返数据提供程序来交换访问令牌的授权请求令牌的原因是什么.

我对OAuth 1.0工作流程的理解是:

  1. 请求站点(消费者)从数据提供者站点(服务提供者)获取请求令牌.

  2. 请求站点要求数据提供者站点对用户进行身份验证,并传入回调.

  3. 一旦用户被认证并授权请求站点,则通过所提供的回调将用户引导回请求站点(消费者),该回调传递现在授权的请求令牌和验证码.

  4. 请求站点交换访问令牌的请求令牌.

  5. 请求站点使用访问令牌从数据提供者站点获取数据.

假设我做对了,为什么回调只是在步骤3中直接向请求站点提供访问令牌,从而消除了第4步?为什么需要交换访问令牌的请求令牌?它是否仅存在于需要用户手动输入验证码的消费者,并认为它比访问令牌本身更短更简单?

Bos*_*osh 16

乔,

使用OAuth 1.0时,重要的是要记住哪些部分正在发生"服务器到服务器"以及哪些部分涉及浏览器("用户代理").如果您愿意,OAuth的"要点"是获取服务器端访问令牌消费者后端服务器的秘密,而不必通过浏览器传递秘密.

考虑到这一点:当用户授权请求令牌时,"回调"通过用户代理通过HTTP重定向发生.换句话说,浏览器"看到"回调中的任何数据(即验证者代码和请求令牌但不是请求令牌SECRET).这就是访问令牌(和秘密)不能成为回调步骤的参数的原因:这些需要直接从服务器到服务器进行通信,而不是通过浏览器进行通信.

  • 关于另一个问题的答案在这个问题上有一些细节:http://stackoverflow.com/questions/3584718/why-is-oauth-designed-to-have-request-token-and-access-token/3663351#3663351 (3认同)