Articles of passport.js

错误:未能在会话中find请求令牌

我在主要的护照回购中发现了一些问题,但是,我认为这主要与这个特定的策略有关,因为我能够使用护照 – 谷歌 – 奥法策略成功validation身份。 Error: failed to find request token in session at Strategy.OAuthStrategy.authenticate (/home/glug/application/node_modules/passport-dropbox/node_modules/passport-oauth/lib/passport-oauth/strategies/oauth.js:124:54) at attempt (/home/glug/application/node_modules/passport/lib/passport/middleware/authenticate.js:243:16) at Passport.authenticate (/home/glug/application/node_modules/passport/lib/passport/middleware/authenticate.js:244:7) at callbacks (/home/glug/application/node_modules/express/lib/router/index.js:161:37) at param (/home/glug/application/node_modules/express/lib/router/index.js:135:11) at pass (/home/glug/application/node_modules/express/lib/router/index.js:142:5) at Router._dispatch (/home/glug/application/node_modules/express/lib/router/index.js:170:5) at Object.router (/home/glug/application/node_modules/express/lib/router/index.js:33:10) at Context.next (/home/glug/application/node_modules/express/node_modules/connect/lib/proto.js:190:15) at Context.actions.pass (/home/glug/application/node_modules/passport/lib/passport/context/http/actions.js:77:8) 我使用redis作为会话存储,但是,即使在消除之后,它仍然失败,出现相同的错误消息。 var DropboxStrategy = require('passport-dropbox').Strategy; app.configure(function(){ app.set('port', config.express.port); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); […]

Passport.js:passport-facebook-token策略,通过JS SDKlogin,然后validation护照?

我正在寻找一种方法让我的客户端与Facebook的JS SDK授权,然后以某种方式将此授权转移到我的节点服务器(所以它可以validation与fbgraphicsAPI的请求) 我偶然发现: https : //github.com/jaredhanson/passport-facebook/issues/26 & https://github.com/drudge/passport-facebook-token 护照-Facebook似乎是一个完全不同的策略。 当我假设: 一个使用fb JS SDKlogin,然后facebook-token策略以某种方式从文档或正文对象中提取令牌和fb id? 或者有没有其他体面的方式来实现这一目标? 我试图避免由服务器SDK强制实施的redirect

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