Tag: passport.js

护照js本地策略自定义callback“缺less凭据”

我有一个非常烦人的问题,节点js,expression4和护照。 我尝试了所有我能想到的选项,但仍然没有解决scheme。 找不到来自其他post的解决scheme。 码: app.post('/login', function(req, res, next) { console.log(req.body.user_email); console.log(req.body.user_password); passport.authenticate('local', function(err, user, info) { console.log(info); … 问题是,出于某种原因,护照没有获得凭据,并在console.log(info)中提到“Missing credentials”,尽pipe当用户名和密码login在上面时,他们是正确的。 本地策略也应该正确configuration: passport.use(new LocalStrategy ({ usernameField: 'user_email', passwordField: 'user_password', }, function(username, password, done) { console.log(username); console.log(password); … “function(用户名,密码,完成)”永远不会运行,因为“缺less凭据”。 有趣的部分是从另一个HTML / ejs页面,其中一个呼叫进行身份validation: app.post('/login_user', passport.authenticate('local', { successRedirect: '/loginSuccess', failureRedirect: '/loginFailure' })); 问题不存在。 有人知道我在这里失踪吗?!?! 谢谢!

使用Passport JS的自定义策略Oauthauthentication

我正在尝试使用以下API提供的Passport进行身份validation: https : //wiki.nus.edu.sg/display/ivlelapi/Android 。 用户会话数据也应该存储。 从文档看来,authentication过程似乎是Oauth的一个更简单的版本: 应用服务器将用户redirect到授权网站的login页面。 login页面返回一个成功的标记 然后可以使用此令牌检索用户详细信息 但是,护照的OAuth策略似乎需要消费者callback,并需要使用2个令牌的更复杂的过程。 在这种情况下可以使用OAuth吗? 我已经探索了使用passport-local,只检查用户参数(如果用户存在,将用户添加到数据库),但它似乎不接受其他参数。 或者,在这种情况下,Passport JS是否有必要?

Angular问题和“否”Access-Control-Allow-Origin'标题“ – 使用OAuth 2,Passport,Express和Node

我有一个使用节点上运行的OAuth 2的Web应用程序。 使用EJS模板,我能够正确地创build一个工作stream,提示用户login,validation,然后执行“GetUser”GET命令并将输出转储到屏幕上。 最近我试图删除EJS,并希望得到AnguarJS的工作。 目前我已经删除了EJS并实现了Angular,但是有很多奇怪的事情发生,我不知道为什么! 当我的用户点击“login”,他们应该被带到另一个网站,他们login到使用OAuth 2.这个过程工作正常与EJS节点,但是我的angular度控制器加载,正确的部分被加载,但没有数据。 使用Chrome DEV工具查看此过程,我看到以下错误 XMLHttpRequest cannot load http://website/oauth/authorize?… No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access. 更奇怪的是,在networking标签中,我可以看到正确的请求URL! 如果我复制并粘贴到另一个选项卡我的“GetUser”命令执行,但然后节点崩溃,我的网页失败。 我试过不同的浏览器,启用CORS,configurationCORS。 我知道问题是与Angular,因为我可以成功地使用相同的代码与EJS。 我已经把我的Angular代码放在下面,任何帮助将不胜感激! 服务器端 app.js var express = require('express'); var path = require('path'); var favicon = require('serve-favicon'); var logger = require('morgan'); var cookieParser = […]

使用Node.js Passport的Azure AD身份validation返回“此API版本不支持”

我目前正在开发一个使用Azure AD进行身份validation的应用程序。 应用程序应支持多个租户,但只有预定义的租户列表才能访问应用程序。 使用passport-azure-ad库,我将OIDCStrategy添加到护照中,如下所示: // Use Azure AD OAuth2 strategy. passport.use('strategyName', new OIDCStrategy({ callbackURL: 'http://localhost:8080/oauth2/strategyName/callback', clientID: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx', clientSecret: 'secret', identityMetadata: 'https://login.microsoftonline.com/test.mydomain.com/v2.0/.well-known/openid-configuration', responseType: 'id_token', responseMode: 'form_post', skipUserProfile: true }, function (iss, sub, profile, accessToken, refreshToken, done) { console.log(profile); done(); })); 在我的路线上,我有以下设置: // Authentication endpoint. router.get('/strategyName', app.passport.authenticate('strategyName')); router.post('/strategyName/callback', function (req, res, next) { app.passport.authenticate('strategyName', function (err, account) […]

Mean.js req.isAuthenticated显示失败?

我已经下载meanjs version@0.1.12.here我已经使用两台服务器的前端我hvae使用angular的离子它在localhost运行:3000,后端我用meanjs.in意思是我已经创build了注册,login和文章。当我使用meansjs作为后端和前端它工作正常。但是当我连接到另一台服务器(本地主机:3000)注册和login工作正常,但是当我正在创build文章我越来越401非法bcoz该req .isAuthenticated()函数。当我创build文章模块req.isAuthenticated()得到fail.req.isAuthenticated()我dono我应该通过这个函数我已经包括我的代码任何人帮助我 现在我正在传递这样的数据 $http.post('http://192.168.1.14:3000/articles', credentials).success(function(response,data,errorResponse) { // If successful we assign the response to the global user model //$scope.authentication.user =response; console.log(response); console.log(data); // And redirect to the index page $location.path('/tab/account'); }, function(response,data,errorResponse) { $scope.error = errorResponse.data.message; console.log($scope.error); console.log(data); }); 路线: app.route('/articles') .get(users.requiresLogin,articles.list) .post(users.requiresLogin,articles.create); login检查 /** * Require login routing middleware */ exports.requiresLogin = function(req, […]

如何使用Node.js / Express + Passport + Websockets进行身份validation?

我正在构build一个使用Passport.js和OAuth策略进行身份validation的angular2-login-seed 。 很显然,使用这些工具进行身份validation的默认方法是使用通过express签名的HTTP cookie。 从我所知道的护照pipe理实际的Set Cookie头,以便express可以通过request.isAuthenticated()validation每个后续请求,并通过req.session.passport.dataHere访问由护照设置的数据。 我想通过websockets将实时数据整合到应用程序中。 这当然意味着从服务器到客户端的套接字stream。 这个通信完全独立于普通的HTTP服务器请求,意思是: 它不包含所有HTTP请求包含的HTTP cookie Express不会与套接字进行交互,它使用后端使用的任何实现(sock.js,socket.io)进行pipe理。 这使得简化表示HTTP请求之间的authentication以及websocket数据到后端是困难的,因为它们是单独的通信方法。 从我的研究来看,这给了我两个select。 其中之一是使用库来给我的套接字实现(最好是socket.io上的sock.js,但我需要做更多的研究)访问快速会话。 然后,我可以validation套接字连接,但我想要的。 问题是我不知道如何将快速cookie从前端的stream,因为JavaScript无法访问它(HTTP只有cookie)。 我见过的另一个常见解决scheme是使用JWT(JSON Web Tokens)。 围绕这个存储的实现将JWT存储在前端的localstorage中。 这是SPA(在我的情况下,Angular2服务)可以发送每个请求“无状态”服务器身份validation,我们可以通过websocket发送validationwebsocket连接(前端JS显然有权访问本地存储) 。 想到这个实现时,想到了几件事情: Passport OAuth策略甚至有可能使用JWT而不是常规会话信息? 这将涉及什么样的修改? 从我可以告诉Passport策略使用某种forms的OAuth1或OAuth2父策略进行身份validation,默认使用Cookie。 将这个重要的信息存储在本地存储中将会打开应用程序直到安全漏洞(XSS,CSRF等) 如果是这样,我见过的最常见的解决方法是将JWT存储在一个cookie中,这样它不能被轻易访问,欺骗或伪造。 但是,这使我回到了之前使用智威汤逊的地位,所以不用担心。 这是否意味着我不得不在后端使用某种状态pipe理存储(例如Redis)来pipe理JWT主体的身份validation和解码? (我对Redis一无所知,等等)。 连接服务器HTTP请求和套接字数据之间的身份validation的想法很奇怪,但对正确authentication一个套接字连接看起来至关重要。 我有点惊讶一个更简单的方法不存在。 我已经做了一些研究,并且看到了诸如socketio-jwt , express-jwt等等的东西,但是我不知道这是否可以用Passport策略进行可pipe理的转换,或者如果打开快速会话数据到套接字的实现,或者如果我正在做这一切都错了! 任何帮助或指导将非常感谢。

由于Chrome预加载导致护照FacebookTokenError

我正在开发一个Web应用程序,允许用户使用Passport.js通过Facebooklogin。 我的代码如下: /* Passport.js */ var passport = require('passport'); var FacebookStrategy = require('passport-facebook').Strategy; /* DB */ var User = require('../models/db').User; exports.passport = passport; passport.use(new FacebookStrategy( { clientID: '<ID>', clientSecret: '<SECRET>', callbackURL: 'http://localhost:4242/auth/facebook/callback' }, function (accessToken, refreshToken, profile, done) { console.log(profile.provider); User.findOrCreate({ "provider": profile.provider,"id": profile.id }, function (err, user) { return done(err, user); }); } )); […]

获得“错误:string”不是有效的BCrypt哈希“,抛出一个错误:)”在摩卡ExpressJStesting

我有一个使用Passport进行身份validation的MEAN堆栈应用程序。 我试图编写一个unit testing,login并检查您是否被redirect到根( / )。 但是,每当我运行摩卡我得到以下错误信息: 1) POST /home Login test should redirect to / after login: Error: the string "Not a valid BCrypt hash." was thrown, throw an Error 🙂 这是我的unit testingLoginSpec.js : var should = require("should"); var app = require("../app"); var mongoose = require("mongoose"); var User = mongoose.model("User"); var request = require("supertest"); var […]

获取客户端上的令牌以进行通行证本地authentication

编辑我试了两个,redirect,而不是redirect。 当redirect时,我得到的结果与我直接请求/结果相同,但当我收到的data = Moved Temporarily. Redirecting to /不是包含data = Moved Temporarily. Redirecting to /的对象时data = Moved Temporarily. Redirecting to / data = Moved Temporarily. Redirecting to / 鉴于这一战略: var strategy = new LocalStrategy( { session: true }, function (username, password, done) { User.findOne({ username: username }, function(err, user) { if (err) { return done(err); } […]

Passport.js用户login和身份validation

在过去的几天中,我一直在使用Passport.js开发我的第一个用户login和authentication系统。 尴尬的是,我已经完成了它,它的工作原理是一样的。 问题是,即使我已经阅读了大量的文章,并在网上查了几十个例子,我似乎并没有完全理解代码本身。 我没有理解它背后的过程,为什么它必须像那样发生。 我真的很感激,如果你能澄清我的代码的一些部分。 这是工作代码,存储在我的app.js文件中: // Passport session setup passport.serializeUser(function (user, done) { done(null, user._id); }); passport.deserializeUser(function (id, done) { User.findById(id, function(err, user) { done(err, user); }); }); // Use the Local Strategy within passport passport.use(new LocalStrategy(function (username, password, done) { User.findOne({ username: username }, function(err, user) { if (err) { return done(err); } […]