2016-08-20 50 views
3

我有一个节点服务器使用oauth与第三方进行身份验证(如堆栈溢出)。当第三方点击我的回调并授权请求并获取访问令牌和其他信息时,我想将此信息传递给我制作的反应应用程序,因此反应应用程序可以使REST调用直接使用访问令牌来自提供者。节点表达反应oauth传递访问令牌后回调与反应客户端应用程序

我是新来的反应和节点,但能够使节点服务器,可以获取访问和刷新令牌信息。我是新来的'服务'并提供反应的应用程序。我一直在使用

app.use('/client', express.static(__dirname + '/client')); 

来服务反应的应用程序,这在很大程度上的作用很大。目前我所处的情况超出了范围,我想了解如何在授权回调后将oauth信息与我的反应应用程序一起发回。我正在使用的流在回调中授权请求,然后重定向回到/ client路由来呈现应用程序,该应用程序未能将任何oauth信息传递给客户端。有没有什么办法可以在重定向之前设置标题以获取oauth信息,然后在响应应用程序中获取该oauth信息?

我张贴在这里获得一些建议,我应该阅读一些途径和资源,也许对我目前的情况提出一些建议。我渴望了解更多关于快递的信息,目前正在寻找将我需要的信息设置为标题,然后将反应应用程序作为文件或其他东西提供的服务,但我还不确定。

感谢所有先进!

回答

2

我会尽我所能来回答你的问题。因此,SPA(单页应用程序)和OAuth登录的问题是使用重定向传输数据的唯一方法是URL查询字符串。 JWT(JSON Web Token)可以实现这一点,但它只支持移动原生SDK-s。解决方案的网络,而不使用酥料饼的流动这里:

对于Node.js的,我建议使用OAuth的Passport.js模块,登录流程:

  1. 例/认证/谷歌 - >重定向到谷歌登录页面。
  2. 成功时,你就会得到重定向回回调URL /认证/谷歌/回调
  3. 你也拿回的access_token,refresh_token,基本轮廓等
  4. 没有会话使用,因此我们使用了智威汤逊和产生信息服务器端的令牌。
  5. 使用令牌重定向回应用程序:app.example.com?token=JASJKDk ..
  6. 客户端从查询字符串中提取令牌。

这只是您可能使用的一种可能的流程,而不是JWT,您也可以使用会话/ cookie解决方案。

+0

非常感谢你! 这是有道理的。因此,我会让节点服务器处理/ auth/google&/ auth/google/callback路由并使用JWT对access_token进行编码,refresh_token存储在url中以传回客户端? 所以流量可能是这样的: 1.点击一个按钮登录到谷歌。 GET获取来自节点的谷歌登录URL重定向它得到的URL 2.login to google - >请求回调节点并返回access_token,refresh_token等 3。使这个信息的JWT附加到URL并返回url上的客户端应用程序 4.decode jwt在客户端使用令牌为ajax – user1807880

+0

实际上,您只需要JWT,不需要传回访问令牌,刷新令牌,至少我想你不需要这些在客户端,只在服务器端? –

+0

对于这个用例,我打算将访问令牌传递给客户端以进行一些其他的调用。只要将URL上的access_token放在URL上就像JWT一样是不安全的?我想确认这是使用JWT的原因 – user1807880

相关问题