无法使用node.jsvalidation移动客户端(使用passport.js)

我试图build立一个CRUD应用程序与node.js作为后端API(快递)和networking应用程序(骨干)和移动客户端(原生android)作为前端(我是node.js初学者)

我的服务器解决scheme基于以下伟大教程“easy-node-authentication” 。

在我的Android应用程序中,我使用Google Plus SDK完成了身份validation步骤(移动到google-plus直接请求)后,设法获得了用户Google-Token。

我试图理解和find正确和优雅的方式来重新使用给定的谷歌令牌,并通过谷歌加帐户再次authentication我的Android用户,以确保移动客户端持有真正的令牌,然后添加一个新的条目(ID,令牌,电子邮件,名称)我的用户表DB在我的节点后端。

问题是:如果我想保持我的后端没有改变,我的下一步应该是什么? 我应该发送带有令牌的GET请求作为cookie到/ auth / google吗? 也许到/ auth /谷歌/callback? 另一个URL? 这是否有意义呢?

请注意:我知道上面提到的'easy-node-auth'解决scheme是基于会话和cookie的。 说,我仍然试图了解是否有一个方便的方式来整合(Android和节点),因为它适用于我的networking应用程序和节点。

好吧,我有与Facebook身份validation相同的问题。 最简单的方法是只使用http://scotch.io/tutorials/javascript/easy-node-authentication-google中描述的SIGNUP解决scheme,但在客户端保留google auth LOGIN。 无论客户端使用您的应用程序,您的身份validationstream程必须相同。 (浏览器,Android应用程序等)

因此,您需要执行以下操作(在此处进行了详细说明, url为https://developers.google.com/accounts/docs/OAuth2UserAgent ):

  1. 在浏览器端(使用JS SDK)使用AJAX设置Google oauth2login。 AJAX响应应该包含某种访问令牌。

  2. 对于从浏览器或本机客户端发出的每个请求,请在Authorization标头中发送google访问令牌,并使用nodeJS将其与https://www.googleapis.com/oauth2/v1/tokeninfo进行核对。 这将为您提供用户标识(您在注册阶段保存在数据库中)并检查标记的有效性。

所以这很重要,但是您应该摆脱在Google上进行OAuth2login的护照模块。 事实certificate, 第2步可以使用nodeJS passport-google-token模块完成! 所以这不应该是太多的工作。

祝你好运

据我了解,这种情况是有点独特的,因为你有一个客户端(Android应用程序)已经validation自己而不使用您的后端应用程序。 但后端应用程序将在随后的请求中使用,你需要authentication到后端应用程序? 如果是这样,那么我认为,当你build立这个,你会遇到问题,信任你的客户在后端系统,除非它可以validation客户端的凭据。 如果后端系统可以以某种方式validation来自Google的令牌属于某个用户,那么您可以强制执行授权。 否则,后端系统会信任所有无论质量如何都有“标记”的客户端(如果我的理解错误,请再纠正一下)。

如果后端系统可能是从Google获取该令牌的人,那么他们可能会更好,然后这个令牌会负责authentication。 客户端可能会发送必要的证书,这些证书可以被发送来创build令牌。 从那时起,您可以轻松地使用cookie在HTTP请求中来回传送令牌。

另一个select是使用用户名/密码组合,build立一个单独的authenticationscheme,这是与手机检索的令牌分开的。 很难保护后端数据(如果这是你的意图)从任何客户端没有以某种方式validation客户端。

一旦你决定如何authentication一个用户,根据用户是否被authentication来限制你的API是相对容易的(使用像上面描述的Passport这样的东西)。 在客户端,我发现一个简单的模式是将用户redirect到一个login页面,如果任何API返回401(未授权)。