Tag: oauth

在Node.js服务器中validationGoogle授予的OAuth令牌的正确方法是什么?

我试图validationAndroid平台的移动应用程序自定义node.js服务器API。 我想为此使用Google OAuth2令牌,而不是推出自己的身份validation,因为安装了Google Play的Android设备可以让应用开发者使用。 我正在使用Google Play服务库中的GoogleAuthUtil.getToken调用, 这里logging了GoogleAuthUtil.getToken调用。 我试图按照这个Android开发人员博客post概述的build议 getToken方法在我的情况下返回一个长857字节的string。 如果我尝试将此令牌传递给Google的TokenInfo端点,则会返回: {'错误':'invalid_token','error_description':'无效的值'} 我在这里做错了什么? 在getToken调用的“范围”中,我发送: audience:server:client_id:**i_put_my_clientid_here** 。 我有一个clientid为“已安装的应用程序”生成。 使用这个客户端ID,对getToken的调用根本不起作用。 当我生成一个“服务帐户”的客户端ID,调用成功,但我得到一个857字节的令牌失败,如上所述传递到TokenInfo端点。 编辑:我也创build了“Web应用程序”的客户端ID,因为它似乎是调用getToken时使用的正确的客户端ID。 但行为是一样的,我得到一个857字节的令牌,调用Google的端点时不validation。 如何在Android上使用Google Play服务正确获取有效的身份validation令牌? 一旦我有正确的标记,什么是正确的node.js库来validation它的服务器端? 我可以使用passport-google-oauth吗?

使用带有Google身份validation的节点护照来限制login到特定的域

我正在实施Google Auth上的一项内部服务。 这是一个带有Node后端的JS客户端应用程序。 我select使用Passport.js和Passport-google-oauth策略的Node模块。 我已经成功地工作,但有一件事仍然让我困惑。 我想确保我的应用程序只允许公司员工login。 据了解, 根据官方文档 ,您可以使用名为“hd”的参数来限制域的login。 首先,您在Passport.js的上下文中发送该参数的位置? 我只是不明白在哪里放在代码中。 如果有帮助,我一直以来都是按照passport-google-oauth提供的例子 。 其次,从理论上讲,这一切是如何工作的? 它在Google方面,他们拒绝任何人试图访问我们公司以外的域名的应用程序。 还是在我身边,我需要检查用户login的域名是什么?

REST API和移动应用程序的身份validation策略

我正在用Node.js和Express + MongoDB创build一个REST API服务器。 这个API将有不同的移动客户端(iOS,Android),以及可能以后的Web应用程序。 我需要用户login才能执行一些API请求。 没有第三方应用程序我想连接(没有Facebook,谷歌等)。 我也不想强迫用户访问一个网页或类似的东西,以便他们login。 根据我在许多search中看到的,最好的方法是让用户使用完全凭证login一次,向他们发送令牌作为回报,并使用该令牌validation将来的请求,直到过期为止。 但是,我不知道如何实现这一点。 我很困惑所有的不同的策略。 这是通过基于HTTPS的身份validation完成的,具有OAuth,OAuth 2.0,…? 我只是不知道该用什么 另外,我真的不想在这里重新发明轮子,不是因为我懒,而是主要是因为安全问题。 有没有我可以用来实现这个库? 我听说护照,但我不明白,如果这是可行的或不。 这听起来像是一个通用的东西,我相信有一个简单的解决scheme。 谢谢!

InternalOAuthError:无法获取访问令牌

任何人都可以帮助我与下面的代码链接GitHub oauth2提供服务器与passport-oauth2消费者 在我用http://localhost:8082login后,到达我的callbackURL: http://localhost:8081/auth/provider/callback ,它会抛出一个错误 var express = require('express') , passport = require('passport') , util = require('util') , TwitterStrategy = require('passport-twitter').Strategy; var TWITTER_CONSUMER_KEY = "–insert-twitter-consumer-key-here–"; var TWITTER_CONSUMER_SECRET = "–insert-twitter-consumer-secret-here–"; passport.serializeUser(function(user, done) { done(null, user); }); passport.deserializeUser(function(obj, done) { done(null, obj); }); passport.use(new TwitterStrategy({ consumerKey: TWITTER_CONSUMER_KEY, consumerSecret: TWITTER_CONSUMER_SECRET, callbackURL: "http://127.0.0.1:3000/auth/twitter/callback" }, function(token, tokenSecret, profile, done) { […]

即使在范围内,Passport-Facebook也不提供电子邮件

在我的应用程序中,我注册了facebook-strategie如下:但是返回的configuration文件不包含电子邮件字段…. passport.use(new FacebookStrategy({ clientID: config.facebook.clientID, clientSecret: config.facebook.clientSecret, callbackURL: config.facebook.callbackURL, passReqToCallback: true }, function(req, accessToken, refreshToken, profile, done) { // No email in the following colsole.log console.log(JSON.stringify(profile)); })); 得到如下: app.get('/oauth/facebook', passport.authenticate('facebook', { failureRedirect: '/login', scope:['email'] })); (所以我使用范围如这里所说: Passport-Facebook不会收到电子邮件 ) 在FBlogin页面我甚至要求电子邮件,我确实提供: 任何帮助非常appriciated!

iOS&node.js:如何validation传入的访问令牌?

我有一个iOS使用OAuth和OAuth2提供商(Facebook,谷歌,微博等)来validation用户,并提供访问令牌。 除了名称和电子邮件地址等最小数据之外,应用程序不会将这些服务用于除authentication以外的任何其他服务。 然后,应用程序将访问令牌发送到服务器以指示用户已通过身份validation。 服务器是用Node.js编写的,在做任何事情之前,需要根据正确的OAuth *服务validation提供的访问令牌。 我一直在环顾四周,但到目前为止,我发现的所有node.jsauthentication模块似乎都是通过服务器提供的网页login和authentication的。 有谁知道任何node.js模块,可以做一个提供的访问令牌的简单validation?

使用passport.js和express.js(node.js)创build安全的oauth API

我想我有一个特定的问题,除非我没有以正确的方式做事。 我有一个双方的应用程序,一个客户端(html网站),和一个API(使用express + mongodb构build)。 该API将需要安全访问。 他们都在不同的领域,现在让我们说我的网站是在domain.com上,我的API是在api.com:3000。 我已经添加了护照从Github获取访问令牌,因为我使用他们的数据创build了我的用户,所以我可以基本上有一个“用Githublogin”。 我目前的过程是: 1)客户端(站点),在API上打开一个popup窗口 window.open("http://api.com:3000/oauth") 2)快递服务器,启动护照stream程: app.get('/oauth', passport.authenticate('github'), function(req, res) { }); 对于这个策略,我使用了这个代码 。 3)我将callbackredirect到一个url,closurespopup窗口(JavaScript与window.close()): app.get('/oauth/callback', passport.authenticate('github', { failureRedirect: '/' }), function(req, res) { res.redirect('/auth_close'); }); 在这一点上,一切都很好,我现在login在API中。 我的问题是如何将数据返回给客户端,因为客户端还不了解accessToken,用户或用户ID。 所以,从客户端(打开popup窗口的网站),我尝试了不同的方法: 从popup窗口中获取值:由于redirect而不工作,我失去了popup式JavaScript信息的轨道 调用我的API来获取会话中的“当前用户”,如http://api.com:3000/current另外一个请求,并不理想,但是这个工作。 但是,我仍然有一个问题。 如果我从浏览器到达它,这个/当前url正在返回用户,因为浏览器在头部请求中发送快速会话cookie: Cookie:connect.sid=s%3AmDrM5MRA34UuNZqiL%2BV7TMv6.Paw6O%2BtnxQRo0vYNKrher026CIAnNsHn4OJdptb8KqE 问题是我需要从jquery或类似的请求,这是失败的地方,因为会议不发送。 所以用户不会被返回: app.get('/current', function() { // PROBLEM HERE, req.user is undefined with ajax calls because of […]

node.js上的OAuth出现问题

我正在尝试让OAuth在node.js上工作。 我在node-oauth的文档中发现了这个: var OAuth= require('oauth').OAuth; var oa = new OAuth(requestUrl,accessUrl,consumerKey,consumerSecret,"1.0A",responseUrl,"HMAC-SHA1"); 官方教程的下一步说: 然后按照正常渠道获取有效的访问令牌+访问令牌密钥“ 这些“正常渠道”是什么? 我知道用户必须在“供应商”网站上以某种方式进行身份validation,并且通过某种方式调用了响应url,但是我找不到如何实现此操作的说明。 有人可以启发我吗?

使用nodejs进行Google身份validation

我正在尝试使用我的node.js服务器访问Google身份validationAPI,但我无法find。 基本上,我希望用户到达我的login页面,点击身份validationbutton,然后服务器将他redirect到Google API,用户允许我的应用程序访问他的数据,然后Google API将用户redirect到我的网站授权令牌。 我已经设置了oauth2所需的url,它似乎工作(如果我把它粘贴到我的网页浏览器,它会redirect到我的谷歌授权页面)。 我看到这个post似乎回答我的问题,但我不怎么处理快递代码部分。 这是我正在使用的代码: https.get(options, function(res) { var retrieved_data = ''; res.on('data', function(data) { retrieved_data += data; }); res.on('end', function() { // FIXME client_response.writeHead(302, {"Content-Type" : "text/plain", "Location" : res.headers.location}); client_response.end(retrieved_data); }); }); 但是这个方法在我的客户端页面上返回一个错误(由我的ajax请求的错误字段引发)。 如果我将HTTP代码更改为200,但没有“位置”信息,则会在客户端上显示一个“暂时移动”页面,其中包含一个将我redirect到Google API授权页面的button。 任何build议?

如何解码一个节点应用程序中的谷歌OAuth 2.0 JWT(OpenID连接)?

我有一段时间在这里尝试使用谷歌OAuthauthentication我的节点快递应用程序中的用户。 我可以成功地完成OAuth,它将返回如下响应: { access_token: 'token string', id_token: 'id.string', expires_in: 3599, token_type: "Bearer" } 这一切都是有道理的,但我不能为我的生活弄清楚如何解码智威汤逊。 所有这些我都没有经验,所以这对我来说有点陌生。 按照此处列出的说明: https : //developers.google.com/accounts/docs/OAuth2Login#validatinganidtoken我试图在我的节点应用程序本地解码智威汤逊。 我在我的节点环境中安装了https://github.com/hokaccha/node-jwt-simple 。 而且我很确定我需要使用这个证书( https://www.googleapis.com/oauth2/v1/certs )来解码它,但是我在这里有点遗憾。 我真的不知道如何将证书放入我的节点应用程序,之后如何与node-jwt-simple一起使用它。 而且我也不是很了解我怎么知道什么时候需要提交新的证书,而不是使用caching的证书。 有人在这里有一些经验,可以帮助我吗? 谢谢你的帮助。 在这一点上,我完全不知所措。 **更新** 所以我取得了一些进展…有点。 通过调用jwt.decode(id_token,certificate,true); 我能够成功解码令牌。 即使证书var是一个空对象{}。 这留下了三个问题。 1:使用谷歌的url将证书join我的快递应用的最佳方式是什么? 2:我怎么知道什么时候需要拉一个新的版本? 3:看起来像是通过noVerify(jwt.decode中的第3个参数)是一个可怕的想法。 我怎样才能在没有通过的情况下工作? 它看起来也许jwt-simple期待hs256和令牌使用rs256。 再一次,我在这方面超级经验不足,所以我可能会在这里的基础。 *更新*感谢来自纳特的帮助,我能够得到这个工作! 我想我已经尝试了每个JWT和JWS节点模块。 我最终得到的结果如下:我发现我看到的所有模块都不像我想要的那样。 我创build了以下用于解码id_token的jwt解码助手方法,这样我就可以从头文件中获取孩子了。 module.exports = { decodeJwt: function (token) { var segments = […]