我想知道OAuth 1.0需要往返数据提供者来交换访问令牌的授权请求令牌的原因是什么。
我对OAuth 1.0工作流程的理解是:
请求站点(消费者)从数据提供者站点(服务提供者)获取请求令牌。
请求网站要求数据提供商网站对用户进行身份验证,并传入回调。
一旦用户通过身份验证并授权请求站点,用户将通过提供的回调被定向回请求站点(消费者),该回调将传回现已授权的请求令牌和验证码。
请求站点交换访问令牌的请求令牌。
请求站点使用访问令牌从数据提供者站点获取数据。
假设我做对了,为什么回调只是在步骤3中直接向请求站点提供访问令牌,从而消除了第4步?为什么需要交换访问令牌的请求令牌?它是否仅存在于需要用户手动输入验证码的消费者,并认为它比访问令牌本身更短更简单?
答案 0 :(得分:16)
乔,
使用OAuth 1.0时,重要的是要记住哪些部分正在发生“服务器到服务器”以及哪些部分涉及浏览器(“用户代理”)。如果您愿意,OAuth的“要点”是将服务器端访问令牌和密码提供给消费者的后端服务器,而不会让秘密通过浏览器。
考虑到这一点:当用户授权请求令牌时,“回调”通过用户代理通过HTTP重定向发生。换句话说,浏览器“看到”回调中的任何数据(即验证者代码和请求令牌但<em>不是请求令牌SECRET )。这就是访问令牌(和秘密)不能成为回调步骤的参数的原因:这些参数需要直接从服务器到服务器进行通信,而不是通过浏览器进行。