这个问题是任何人谁是熟悉护照与智威汤逊与Google/Facebook战略 - 我如何将智威汤逊与Google/Facebook战略相结合?
- Node.js的
- 快递
- 护照
- JWT认证与护照(JSON网络令牌)
- Facebook的OAuth2.0的或谷歌的OAuth2 .0
我一直在做一些在线课程,并了解如何做以下两件事:
- 认证使用Passport本地策略+ JWT令牌使用Passport谷歌/ Facebook的战略+曲奇/会话
- 认证。
我试图结合这两个课程的内容基本上。我想使用Google策略+智威汤逊认证。我想使用JWT而不是cookies,因为我的应用程序将成为网络/移动/平板电脑应用程序,而且我需要访问来自不同域的api。
有我与这个有两个问题: 揭开序幕谷歌/ Facebook的OAuth的管道,你需要调用“/ auth /中的Facebook”或“/ auth /中谷歌”。 Oauth流程基本上都是一样的,所以当我从现在开始说'/ auth/google'时,我指的是两者之一。现在我遇到的问题是:在客户端上,我是否使用href按钮链接或axios/ajax调用来调用“/ auth/google”路由?如果我使用href或axios/ajax方法,我仍然遇到两种解决方案的问题。
在href方法问题: 当我分配一个<a>
标签与A HREF到/ auth /中谷歌的认证工作完全正常。用户通过Google Auth流程进行推送,他们登录并调用'/ auth/google/callback'路由。我现在的问题是如何正确地将JWT令牌从'/ auth/google/callback'发送回客户端?
经过大量的谷歌搜索后,我看到人们已经简单地通过重定向查询参数中的oauth回调将JWT传递回客户端。例如:
res.redirect(301, `/dashboard?token=${tokenForUser(req.user)}`);
我与此有关的问题是,现在的身份验证能力保存在我的浏览器历史记录!我可以注销(销毁保存在localStorage中的令牌),然后只需查看我的浏览器URL历史记录,返回包含查询参数中的令牌的url,然后我将自动再次登录,而无需通过Google策略!这是一个巨大的安全缺陷,显然是解决这个问题的不正确方法。
的爱可信/ Ajax方法问题: 现在摆在我这个问题说明问题,我肯定知道,如果我得到这个工作,它会解决我与以前的href问题让所有的问题。如果我设法从axios.get()调用中调用'/ google/auth'并在响应正文中接收JWT,我将不会将该标记作为url参数发送,并且不会保存在浏览器历史记录中!完美的权利?也仍有一些问题,这种方法:(
当试图调用axios.get('/auth/google')
我得到以下错误:
我怎么一直试图解决的问题:
- 我将cors安装到了我的npm服务器上,并在我的index.js文件中添加了
app.use(cors());
。 - 我拿了一个刺,并在“授权的J中添加了”http://localhost:3000“ Google开发者控制台中的“avaScript起源”。
这些解决方案都没有解决这个问题,所以现在我真的觉得停滞不前。我想使用axios/ajax的方法,但我不知道如何克服这个错误。
对不起,这么长的留言,但我真的觉得我必须给你所有的信息,以便你能够帮助我。
再次感谢,期待收到您的来信!