Tag: passport.js

在中间件中使用中间件有更好的方法吗?

例如,我想创build一些使用Passport的中间件,但是我不想在使用此自定义中间件的应用程序中需要Passport。 我相信我可以做到以下事情来实现这一点。 这是正确的吗? 有一个更好的方法吗? someModule.js var express = require('express'), passport = require('passport'); exports.someMiddleware = function(app) { app.use(passport.initialize()); app.use(passport.session()); return function(req, res, next) { // Do something next(); } } app.js var express = require('express'); var someModule = require('./someModule'); app = express(); app.use(someModule.someMiddleware(app)) 而不是…… someModule.js var express = require('express'), passport = require('passport'); exports.someMiddleware = function(app) { […]

使用Passport.js更正身份validation模式

看来护照文件build议使用如下模式: app.get("/my/protected/resource", passport.authenticate("local"), function(req, res){ res.json({my:"protected resource"}); }); 作为authentication后保护资源的标准方式。 然而,正如我一再尝试这个策略,它一再给我401 – Unauthorized 。 相反,如下所示的中间件解决scheme的工作: exports.loggedIn = function(req, res, next) { console.log('Checking credentials…'); if(req.isAuthenticated()){ next(); } else { res.redirect("/"); } }; 但是,这个要么没有find,要么在文档中不突出。 哪两个是使用passport.js保护资源的标准和正确方法?

将用户保存到MongoDB的护照Facebook策略

我正在尝试定期login(与Facebook战略)而我不断收到我的控制台中的这个错误。 错误:ENOENT,打开“/ home / ec2-user / XXXXX /节点模块/expression/节点模块/连接/ 方式是? 这是我的代码(facebook应用程序令牌在另一个js文件中): /** * Module dependencies. */ var config = require('./oauth.js'); var express = require('express'); var routes = require('./routes'); var user = require('./routes/user'); var http = require('http'); var path = require('path'); var mongoose = require('mongoose'); var passport = require('passport'); var FacebookStrategy = require('passport-facebook').Strategy; var app = express(); […]

authentication和callback代码之后没有获得访问令牌来使用elance-api

我正在尝试设置node.js应用程序使用OAuth2.0使用Elance API我正在使用passport.js连接到elance API,到目前为止我们能够得到正确的代码。 在使用api方法之前,没有获取访问令牌。 也尝试过构build策略,但不会通过用户configuration文件获取访问令牌来连接 我也尝试了相同的PHP,但也得到回拨代码后被吸 这是我通过策略得到的错误: failed to fetch user profile (status: 401 data: {"errors": [{"code":"missing_token","description": "Access token is required for this service"}]})

Express.js Passport身份validation会自动跳过策略

UPDATE 我已经从护照本地注册内部的代码移动到一个单独的处理程序,它运行良好。 问题在于Passport和本地注册的用法,但我不知道为什么。 我有一个设置与Node.js(Express)+护照进行身份validation和注册。 这是以前使用过的标准程序,但似乎不起作用。 护照注册立即进入failureRedirect。 主要的问题是代码没有击中任何的console.log()语句,因此我认为它甚至不处理第一个请求,并自动失败。 任何想法为什么或如何debugging? cmd日志: POST /register 302 4ms – 58b GET / 304 2ms GET /css/bootstrap.css 304 1ms GET /css/main.css 304 1ms GET /javascript/chart.js 304 2ms GET /javascript/bootstrap.js 304 2ms GET /javascript/index.js 304 2ms index.html表单: <form class="form-register" name="register-form" method="post" action="/register" data-name="register Form" enctype="application/x-www-form-urlencoded"> <div class="ARegistration" style="display:none;"> <input type="email" id="txtOnceEmail" class="form-control" […]

testing一个受保护的API调用,摩卡,supertest,节点js,护照

我有一个保护的API与护照作为中间件: server.get('/api/pipes', auth, api.pipes); 如果用户没有授权,则auth方法返回401。 我有这个testing,看看用户是否login: var postValidLoginCredentials = function(){ return request(url).post('/api/login') .set('Content-Type', 'multipart/form-data') .field('email', 'john.smith@example.com') .field('password', 'example') }; //This pass passes it('should return 200 OK when a user enters a valid user and pass', function(done){ postValidLoginCredentials() .end(function(err, res){ res.should.have.status('200'); done(); }); }); 这是我的受保护的api调用的testing: it('should return 200 OK on GET /api/pipes when user is loggedin', […]

passport-saml和SAMLencryption

我是新来的passport和passport-saml ,我试图build立一个Node.js服务器,使用我们大学的Shibboleth身份提供者进行单点login。 我相当接近所有工作,但我在/ login /callback,我认为是与encryptionconfiguration相关的打击。 我可以将客户端redirect到login页面,login成功后,IdP将POST发回到我的/ login / callback路由。 然后我得到这个错误: Error: Invalid signature at SAML.validatePostResponse (…/node_modules/passport-saml/lib/passport-saml/saml.js:357:21) at Strategy.authenticate (…/node_modules/passport-saml/lib/passport-saml/strategy.js:68:18) at …etc… 这听起来像是我传递给certconfiguration设置的cert可能不正确? 我假设decryptionPvk和certconfiguration设置应该是我用来创build我的服务器证书的私钥和身份提供商的HTTPS证书,分别? 或者他们应该是别的东西? 我正在使用最新版本的节点和所有各种模块(快递,护照,passport-saml等) 而作为参考,这里是我用来testing所有这些的服务器脚本: "use strict;" var https = require('https'); var fs = require('fs'); var express = require("express"); var morgan = require('morgan'); var bodyParser = require('body-parser'); var cookieParser = require('cookie-parser'); var session = […]

通过callback或mongoose模型validationPassportJS?

我正在为注册和login用户身份validation设置护照。 现在我看到我可以通过callbackvalidation信息,但是我也可以validation用户模型中的信息。 例如,如果我想使所需的电子邮件字段,那么我可以执行以下操作: validation与护照 // Create the local sign up with Passport passport.use('local-signup', new LocalStrategy({ usernameField : 'userEmail', // Email Field passwordField : 'userPassword', // Password Field passReqToCallback : true }, function(req, email, password, done) { // Find a user with this email User.findOne({ "local.email": email }, function(err, user) { if (err) throw err; // […]

在sails.js下使用SSL时,Passport.js无法初始化

我正在使用Sails.js(v0.9.4)和护照(本地策略)。 一切工作正常。 我有要求在SSL后面设置Sails.js。 所以我有︰https : //www.mydomain.com :8080/ api (我被迫使用8080作为SSL端口)。 我启动了Sails,它响应正常,至less那些打开的控制器。 但是,当我尝试login,护照开始身份validation,我得到以下内容: 错误:未在IncomingMessage.req.login.req.logIn(D:\ Development \ TRYDEV \ try-server \ try-server \ node_modules \ passport \ lib \ http \ request.js中使用passport.initialize()中间件:44 :34)在D:\ Development \ TRYDEV \ try-server \ try-server \ api \ controllers \ AuthController.js:37:17 at Strategy.strategy.success(D:\ Development \ TRYDEV \ wrg-server \ wrg- (D:\ Development \ […]

如何安全地使用Passport与Node.js和MongoDB?

所以我得到了Passport与Node.js和MongoDB的会话pipe理,这当然方便地提供访问请求头中的user对象。 但是,至less对我而言,Passport将这个对象设置为MongoDB的整个帐户文档。 对于我创build的模式,这包括用户的一切 – 电子邮件,名称,哈希和盐渍密码等。所以我有两个关于这个问题。 首先,在服务器和客户端之间来回发送所有这些信息是否真的很安全? 当然,它是通过SSL发送的,密码被哈希和腌制,但所有的用户信息仍然在那里。 我的模式需求用户信息(不需要身份validation的个人信息)保存在不同的MongoDB文档中? 即使我这样做,哈希密码仍然会来回传递。 是否假设SSL防止数据被窃听? 这似乎是假设某人假设已经把所有发送到我的应用程序的头文件都吸走了,他们可以重新创build用户数据库并执行彩虹表攻击。 其次,在服务器端,我(天真的)一直在使用请求标头用户名元素( req.user.username )来确定哪个用户被连接和authentication。 但是,似乎如果用户只是将其标题更改为不同的用户名,我的代码将允许他们伪装成不同的用户。 那么我应该通过其他方式来validation请求的身份,而不是仅仅使用纯文本的用户名呢? 还是我完全不知道如何存储,生成和传递这些头,这实际上不是一个安全问题? 如果是这样的话 – 有人可以详细介绍一下如何从Passport中创build这些头文件吗?