Tag: passport.js

使用callback链接创buildFacebook应用程序

我正在创build一个Facebook应用程序。 我想让用户使用它login到我的网站(使用passportjs)。 但要做到这一点,我需要给callbackurl(我的网站url)。 但我无法在Facebook应用程序创build页面中find该字段。 我错过了什么吗? 我已经search了很长时间了。

PassportJS:如何在我的意见中得到req.user

我使用Express 2.x和会话存储使用pssportjs。 login后,我得到req.User只有一次。 只要我redirectreq.User是不确定的。 这是我的configuration: passport.serializeUser(function(user, done) { done(null, user._id); }); passport.deserializeUser(function(userId, done) { User.findOne({_id: userId} ,function(err, user){ done(err, user); }); }); // Authentication Strategy passport.use(new FacebookStrategy({ clientID: CONFIG.fb.appId, clientSecret: CONFIG.fb.appSecret, callbackURL: CONFIG.fb.callbackURL }, function(accessToken, refreshToken, profile, done) { // asynchronous verification, for effect… process.nextTick(function () { User.findOne({ 'accounts.uid': profile.id, 'accounts.provider': 'facebook' }, function(err, olduser) […]

使用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 […]

Passport – Node.js不返回刷新令牌

我正在尝试使用node.js的护照模块返回一个refreshToken。 不过,我正在使用下面的代码,我无法logging任何刷新令牌,但访问令牌工作正常。 有没有什么办法指定访问types离线为这个模块希望返回这个? var GoogleStrategy = require('passport-google-oauth').OAuth2Strategy; passport.use(new GoogleStrategy({ clientID: GOOGLE_CLIENT_ID, clientSecret: GOOGLE_CLIENT_SECRET, callbackURL: "http://myurl/auth/callback" }, function(accessToken, refreshToken, profile, done) { console.log(refreshToken); process.nextTick(function () { return done(null, [{token:accessToken}, {rToken:refreshToken}, {profile:profile}]); }); } )); 这会返回未定义的refreshToken。 任何帮助将不胜感激。

护照login和持续会话

背景 我有一个与邮差完全testing的CRUDfunction的平均应用程序。 我一直试图坚持login相当一段时间,没有运气。 我已阅读并尝试以下 护照文件 toon io的博客关于login 快速会议 Scotch io,节点auth变得容易 再加上一些其他的阅读材料(许多SO问题) 但我只能注册和login一个用户,而不是坚持login会话。 我的应用程序 这里是一个链接到完整的github回购(如果你正在寻找最新的变化检查开发分支) 我对authentication/login的理解 这里是我的理解用户login与我的项目代码示例和邮递员结果以及控制台日志的截图。 护照设置 我有以下auth.js文件,它configuration护照 var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; module.exports = function(app, user){ app.use(passport.initialize()); app.use(passport.session()); // passport config passport.use(new LocalStrategy(user.authenticate())); passport.serializeUser(function(user, done) { console.log('serializing user: '); console.log(user); done(null, user._id); }); passport.deserializeUser(function(id, done) { user.findById(id, function(err, user) { console.log('no […]

在Node.js Passport的Google策略上自定义returnUrl

我正在使用Express和Passport OpenID Google战略,并且我想在每个auth请求上设置returnURL以便能够返回到启动该auth的页面。 情况是,我有HTML5幻灯片应用与Node.js后端(与社会的东西和编辑器,门户和扩展… https://github.com/bubersson/humla ),我希望能够login用户一些幻灯片(通过滑动菜单…),但是我希望他能轻松回到相同的幻灯片。 所以我需要这样的东西? app.get('/auth/google', function(req,res) { var cust = "http://localhost:1338/"+req.params.xxx; passport.authenticate('google', returnURL:cust, function … } 我已阅读护照指南,但仍不知道如何去做。 我知道这不是安全的,但我还能怎么做呢? 或者我怎样才能使应用程序返回到login发起的页面? 还是有办法使用AJAX进行OpenID身份validation(仍然可以使用护照)?

护照 – 脸书 – 不能得到about_me和电子邮件configuration文件字段

我正在尝试使用passport-facebook为我的应用程序build立一个login系统。 除了从请求中返回未定义的2个字段之外,一切进展顺利。 我会发布我的整个代码的login程序,因为我没有看到有关它的很多信息,即使在这个问题有很多问题。 这是app.js中的configuration var passport = require('passport'); var FacebookStrategy = require('passport-facebook').Strategy; passport.serializeUser(function(user, done) { done(null, user.facebookId); }); passport.deserializeUser(function(id, done) { routes.findUserById(id, function(err, user) { done(err, user); }); }); passport.use(new FacebookStrategy({ clientID: FACEBOOK_APP_ID, clientSecret: FACEBOOK_APP_SECRET, callbackURL: FACEBOOK_CALLBACK_URL, profileFields: ['id', 'displayName', 'link', 'about_me', 'photos', 'email'] }, routes.handleLogin )); 使用护照初始化和会话 app.use(passport.initialize()); app.use(passport.session()); 实际的请求处理,请注意我正在使用正确的范围 app.get('/auth/facebook', passport.authenticate('facebook', { scope: […]

我是否实现序列化和反序列化NodesJS + Passport + RedisStore?

我是否实现序列化和反序列化? RedisStore被设置为我的会话存储与Express。 这是否意味着我不执行序列化和反序列化? 会自动发生吗? 当我不执行这些方法时,我得到以下快速错误 – 500错误:无法序列化用户进入会话。 当我执行它们时,我不确定要在反序列化中放置什么。 下面的代码似乎工作,但会议不坚持。 我每次访问该网站时都需要login。 在NodeJS + Passport + RedisStore的任何地方都有一个很好的例子吗? var sessionStore = new RedisStore({ host: rtg.hostname, port: rtg.port, db: redisAuth[0], pass: redisAuth[1] }); passport.use(new ForceDotComStrategy({ clientID: clientId, clientSecret: clientSecret, callbackURL: myurl }, function(token, tokenSecret, profile, done) { console.log(profile); return done(null, profile); } )); appSecure.configure('production', function(){ appSecure.use(allowCrossDomain); appSecure.use(express.cookieParser(expressSecret)); appSecure.use(express.bodyParser()); appSecure.use(express.methodOverride()); […]

使用Passport和OAuth2 +社交networking的NodeJS REST身份validation

我正在使用NodeJS处理REST API。 为了validation,我决定使用Passport 。 我想要真正的RESTful API。 所以这意味着我必须使用令牌而不是会话。 我想让用户使用用户名和密码login,或使用Facebook,Google和Twitter等社交networking。 我使用我自己的OAuth2.0服务器来使用oauth2orize模块发出Access和Refresh tokens 。 所以,现在我可以注册新用户,然后颁发他们的令牌。 我遵循这个教程: http://aleksandrov.ws/2013/09/12/restful-api-with-nodejs-plus-mongodb/ validation路由的用户: // api ———————————————————————————— app.get('/api/userInfo', passport.authenticate('bearer', { session: false }), function(req, res) { // req.authInfo is set using the `info` argument supplied by // `BearerStrategy`. It is typically used to indicate scope of the token, // and used in access control […]

持护照,mongodb和快递会议

我正在使用护照来处理我的应用程序中的身份validation和会话。 我坚持使用mongostore的会话MongoDB。 一般来说设置工作正常。 但是,当我重新启动服务器时,所有的用户都注销了,所以显然会话被保存在内存中,而不是只保存到mongodb。 我正在尝试实现一个用户在重新启动服务器时仍然login的设置。 基本configuration如下 中间件 app.use(express.cookieParser('your secret here')); app.use(express.session()); app.use(passport.initialize()); app.use(passport.session({ maxAge: new Date(Date.now() + 3600000), store: new MongoStore( { db: mongodb.Db( conf.mongodbName, new mongodb.Server( 'localhost', 27017, { auto_reconnect: true, native_parser: true } ), { journal: true } ) }, function(error) { if(error) { return console.error('Failed connecting mongostore for storing session data. %s', […]