Tag: passport.js

Passport Active Directory node.js

我已成功地将oauth1和oauth2令牌与六种护照策略(facebook,twitter,linkedin,instagram,tumblr,google,youtube)交换帐户信息,并将其集成到一个单独的auth服务器中,以保存Mongo会话并创build活动configuration文件,使用Tedious.js在令牌/会话/代码/ ID字段和SQL服务器中的许多标准化的属性字段。 这些护照工具非常好,谢谢。 我对这个项目的最后一个挑战是,把用户名和密码放到一个活动的目录仓库里,以同样的方式查找和authentication。 我一直在尝试一遍又一遍passport-ldap,passport-ldapauth(基于ldapauth-gfork,基于ldapjs),护照-windowsuth和passport-kerberos,似乎正在获取相关的凭证错误(深入代码,添加控制台.logs来试图找出我得到的语法错误)。 是否有任何其他资源和文档使用任何Passport策略访问Node.js中的LDAP / AD? DN与ou语法以及存储库相对于您正在查找的帐户用户的账户访问用户(具有专门设置为访问AD的服务账户)的位置以及filter使得很难找出任何与找出相关的错误我哪里错了。 你匹配到sAMAccountName或uid? 我始终保持“未经授权”的错误。 与其他70个护照战略不同的是,doc和示例清晰且正常,而不是广告/ ldap护照。 任何人都可以指向我一个很好的testing,文档或设置,特别是Passport.js和活动目录?

使用OAuth2保护nodejs / sailsjs API

我用sailsjs开发了一个REST API,我想添加OAuth2授权来保护这个API。 我对OAuth很陌生,我不知道从哪里开始。 我发现可以用于这个目的的几个模块,例如oauth2orize和它的用法的一个例子https://github.com/aaron524/sails-oauth2-provider-example但我不完全理解这是如何工作的内部。 基本上,我将有几个客户端使用我正在开发的API: – 我信任的客户端,我希望与“资源所有者凭据授权”一起使用 – 我不信任的客户端,并使用授权码stream程 我正在考虑在sails应用程序中的Client模型中添加一个受信任的属性,然后当用户login到应用程序时: – 他将直接访问其资源(受信任应用程序的情况) – 他将被要求批准或拒绝应用程序访问其资源(不可信应用程序的情况) 这是一个好方法吗? 任何关于如何根据客户端可信级别select相应策略的指针? UPDATE 我已经在GitHub上安装了下面的项目,使用了我发现的几个教程和项目。 https://github.com/lucj/sails-oauth2-api 这个项目还没有function。 当用户通过应用程序使用API​​时,我仍然不清楚如何select正确的授权types(授权码与资源所有者的密码)。 如何将此检查整合到政策中? 我无法创buildOAuth endPoint(/ oauth / authorize,/ oauth / token)和对oauth2orize的调用之间的链接。 任何想法 ?

node.js REST APIauthentication和oauth2

我有几个问题: 1)使用REST API既是外部API使用,又是作为骨干(或普通的js)前端的服务器端,是不是一个好习惯? 我认为编写一个REST API服务器并将其用作后端要容易得多。 2)如果我写我的webappauthentication与oauth 2标准是一个很好的方式来存储我的秘密令牌在cookie中? 我认为这会造成CSRF漏洞。 正如我看到passport.js使用cookie来存储例如Facebook或Twitter的秘密令牌…在这种情况下是什么关于CSRF?

passport.js和process.nextTick在策略中

我正在面对nodeJS中的新东西: process.nextTick 在passport.js的一些策略代码示例中,我们可以看到 passport.use(new LocalStrategy( function (username, password, done) { // asynchronous verification, for effect… process.nextTick(function () { findByUsername(username, function (err, user) { // … bcrypt.compare(password, user.password, function (err, res) { // … }); }) }); } )); 但是在官方文档中却没有使用。 ( http://passportjs.org/guide/username-password/ ) 我所理解的是,应该使用process.nextTick推迟同步堆栈不阻止事件。 但是在这个策略代码中,没有事件。 这样做的好处是什么?

使用Passport进行身份validation后创build新会话

我已经创build了一个简单的身份validation应用程序与护照(见下面的代码)。 通过会话中间件进行expression,为请求客户端没有会话的每个请求创build一个会话。 我想只在login后分配会话或login后创build一个新的会话。 这是因为我最终将通过HTTPS进行login,并希望阻止黑客劫持已通过身份validation的用户的会话。 这是我的服务器代码: // Server.js configures the application and sets up the webserver //importing our modules var express = require('express'); var app = express(); var port = process.env.PORT || 8080; var mongoose = require('mongoose'); var passport = require('passport'); var flash = require('connect-flash'); var MongoStore = require('connect-mongo')(express); var configDB = require('./config/database.js'); //Configuration of Databse […]

防止Expressjs在请求包含授权头时创build会话?

我有一个API,可以调用使用浏览器的请求是事务性的,并有一个会议或直接,例如。 使用curl,其中请求是primefaces的。 浏览器请求必须首先进行身份validation,然后使用快速会话(connect.sid)进行后续授权,直接API调用使用头: Authorization: "SOMETOKEN"必须为每个请求发送Authorization: "SOMETOKEN" 。 我遇到的问题是,因为我使用相同的Web服务器来提供primefaces和事务性stream量,所以每个API调用都会被Express无谓地授予一个会话。 每个响应都包含一个Set-Cookie,所有这些会话都填满了我的会话存储。 因此: 当请求包含授权标头时,如何防止Express在内存存储(Redis)中input新的sess密钥? 注意。 我得到一个更经典的方法是有一个单独的API服务器和一个单独的WEB服务器,但为什么不能在一台机器上运行? 对我来说,不同之处在于API提供数据,WEB提供视图,但除此之外,它们都是同一应用程序的一部分。 我恰好也允许用户直接访问他们的数据,不要强迫他们使用我的界面。 快速configuration module.exports = function(app, exp, sessionStore, cookieParser, passport, flash) { app.configure(function(){ // Templates app.set('views', ERNEST.root + '/server/views'); app.set('view engine', 'jade'); app.set('view options', { doctype : 'html', pretty : true }); // Allow large files to be uploaded (default limit is […]

Node.js使用Passport进行身份validation:如果字段丢失,如何刷新消息?

我正在使用passport.js,如果我的表单的字段是空的,我想要显示一条消息。 但是我不知道该怎么做,因为护照没有触发策略callback。 我真的希望这个用例更清楚,我不想修改护照。 我觉得有办法这样做,但我不知道在哪里! 我试图使用路由( app.post )的callback,但它似乎并没有按照我的方式工作。 这里是身份validation函数原型: Strategy.prototype.authenticate = function(req, options) { options = options || {}; var username = lookup(req.body, this._usernameField) || lookup(req.query, this._usernameField); var password = lookup(req.body, this._passwordField) || lookup(req.query, this._passwordField); // here is my problem if (!username || !password) { return this.fail({ message: options.badRequestMessage || 'Missing credentials' }, 400); } var […]

什么时候是序列化和反序列化的护照方法? 它究竟设置了什么?

我们有两种types的用户,pipe理员和普通用户。 passport.serializeUser(function(user, done) { console.log('Sear'); done(null, user.id); }); passport.deserializeUser(function(id, done) { console.log(id); console.log("Deser"); User.findById(id, function(err, user) { if(err) done(err); if(user){ done(null, user); }else{ vendorUser.findById(id, function(err, user){ if(err) done(err); done(null,user); }); } }); }); Console.log经常(甚至在一个API请求)与文本输出 DESER 这两个function到底做了什么? 详细的答复表示赞赏。 TIA。

使用护照的Node.js用户authentication

(具有序列化function的更新代码 – 仍然redirect到/ failedRedirect) 我正试图使用​​护照包进行简单的用户名/密码authentication,但是失败。 在下面的例子中,我试图通过基本上总是返回一个有效的身份validation来validation身份validation是否正常(不pipe通过什么),但是由于某种原因它失败了,护照redirect到失败的login链接。 如果有人能帮我弄清楚如何让这个例子简单地authentication任何东西,我应该能够从那里pipe理。 在coffeescript中的代码是: express = require "express" passport = require "passport" LocalStrategy = require("passport-local").Strategy passport.use(new LocalStrategy( (username, password, done) -> console.log "LocalStrategy invoked" done(null, {id: 1, name: "Marius"}) )) passport.serializeUser (user, done) -> done null, user passport.deserializeUser (obj, done) -> done null, obj app = express.createServer() app.configure -> app.use express.bodyParser() […]

通过我的REST API和Facebook进行用户身份validation

我对如何正确安全地使用REST API对用户进行身份validation以及使用其他OAuth 2.0提供程序(例如Facebook,Google等)进行身份validation提供和select有些困惑。 脚本 用户与一个应该使用我的REST API的Web应用程序进行交互。 用户应该能够使用用户名/密码以及使用Facebook等第三方服务login和执行CRUD操作。 我将使用SSL来encryption网站和API的stream量。 没有考虑到第三方login服务,通过研究这里已经提到的各种问题,我想到如图所示的处理用户authentication。 技术和当前的想法 REST API是使用NodeJS和Express使用JS编写的。 通过另一个NodeJS实例提供的WebApp大部分是AngularJS,其中的模板使用了REST API。 我目前的想法是让WebApp处理login序列,并让Facebook使用callback将他们的令牌保存在我的数据库中。 但是这个解决scheme太多的解决方法了! 问题 图像中描述的validation序列是否正确? 上述authentication顺序与OAuth2.0中的资源所有者密码凭证stream程相比如何? 值得使用OAuth2.0而不是它? 我怎样才能通过第三方(即Facebook)整合login? 任何build议或(更好)的例子? 参考 passport.js RESTfulvalidation 用facebooklogin并使用oauth 2.0进行REST API调用的authentication 和其他许多人在这里:)