更具体地说:
我实际上正在尝试使用支持 OAuth 2.0 的新 Basecamp api 集成到 Baseacamp。感谢他们糟糕的资源和文档,我陷入了这个 documentation 的#4这表示我必须发出反向 channel 请求才能获取访问 token (我已成功完成 1-3 个步骤,这意味着我拥有验证码和状态)。
所以,如果有人对这个野兽有任何了解,请帮助我对抗它;)
我使用了 jso OAuth 2.0 库,它帮助我完成了 1-3 个步骤,但该库使用隐式身份验证授予,而 basecamp 使用授权代码授予。所以我想我必须做一些手动的客户端-服务器舞蹈,这就是为什么我需要知道这个反向 channel 请求的含义以及如何制作一个?
最佳答案
如果您正在开发 JavaScript 客户端应用程序,那么您使用的是错误的 OAuth 2 场景。链接文档中使用的场景称为“授权代码授予”,适用于部署到远程服务器的 Web 应用程序。反向 channel 用于在应用程序和认证服务器之间在后台获取 token ,而不涉及用户,因此 token 甚至不会暴露给用户。由于嵌入式客户端(javascript、移动应用程序等)没有很好分离的远程环境,因此它们无论如何都容易受到攻击,因此有一个简化的“隐式授予”场景,其中不包括此反向 channel 查询。您应该使用隐式授权流程。
根据您链接的文档,Basecamp 使用非常过时的 OAuth2 草案,即版本 5,该规范是在版本 31 之后发布的。在该旧版本中,第一个场景由“type=web_server”标识(更改为规范中的“response_type=code”),而您需要“type=user_agent”(目前规范中的“response_type=token”)才能使用隐式授予场景。我不知道 Basecamp 是否对此有适当的文档,链接的文档说它受支持,但没有其他内容。
关于jquery - 术语 "Backchannel Request"是什么意思以及如何发出反向 channel 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25161803/