术语“Backchannel请求”是什么意思以及如何进行反向信道请求

时间:2014-08-06 13:34:16

标签: jquery oauth-2.0 basecamp

更具体一点:

我实际上正在尝试使用支持OAuth 2.0的新Basecamp api集成到Baseacamp。并且他们的资源很差文档我被困在这个documentation的#4,它说我必须做一个反向通道请求来获取访问令牌(我已经成功完成了1-3步,这意味着我有验证码和状态)。 / p>

所以,如果有人对这个野兽有任何想法,那么请帮我解决这个问题;)

我使用过jso OAuth 2.0 lib帮助我完成了1-3步骤,但是这个lib使用隐式身份验证授权,而basecamp使用授权代码授权。所以我想我必须做一些手动的客户端 - 服务器舞蹈,这就是为什么我需要知道这个Back Channel请求意味着什么以及如何制作一个?

3 个答案:

答案 0 :(得分:1)

什么是后台频道?

简单地说,反向通道是到Internet上服务器的出站连接,由运行防火墙后面的PC的客户端软件自动建立。它也可以像在客户端桌面上容易访问的位置留下的一些小信息(" cookies")一样无害。反向信道连接和信息收集cookie的目的很多,可以分为有用,可疑和邪恶。让我们看一下每个类别的例子。

答案 1 :(得分:0)

如果您正在开发一个javascript客户端应用程序,那么您使用的是错误的OAuth 2方案。链接文档中使用的方案称为“授权代码授权”,适用于部署到远程服务器的Web应用程序。反向信道用于在app和auth服务器之间的后台获取令牌而不涉及用户,因此令牌甚至不暴露给用户。由于嵌入式客户端(javascript,移动应用程序等)没有很好的分离远程环境,因此无论如何它们都是易受攻击的,有一个简化的“隐式授权”场景,不包括此反向通道查询。您应该使用隐式授权流程。

根据您链接的文档,Basecamp使用了非常过时的OAuth2草案,即版本5,规范在版本31之后发布。在旧版本中,第一个场景由“type = web_server”标识(更改为“规范”中的“response_type = code”,而您需要“type = user_agent”(当前在规范中使用“response_type = token”)才能使用隐式授权方案。我不知道Basecamp是否有适当的文档,链接的文档说支持它,但没有别的。

答案 2 :(得分:0)

忽略“反向通道”。这只是一个POST请求。

在第三步中,您将获得临时验证码。在步骤4中,发送带有临时验证码的POST请求,该验证码将被交换为半永久性身份验证令牌。

这是我用来处理basecamp的OAuth2库。相关的步骤4,“反向通道请求”发生在getOAuthAccessToken函数中:https://github.com/ciaranj/node-oauth/blob/master/lib/oauth2.js#L153