Articles of 基本authentication

是否可以在Express上的白名单路由中应用基本身份validation/中间件?

我正在使用Express in Node实现一个RESTful API,而我对这两者都是新手。 我想使用基本身份validation来控制访问。 我想应用它使用白名单,但我不知道如何做到这一点。 列入黑名单很简单,我可以用第二个参数来#VERB我的#VERB电话: app.get('/', asyncAuth, requestHandler); 我可以采取更进一步黑名单一切: app.all('*', asyncAuth, requestHandler); 但是我想将我的basicAuth应用到除 POST /users 以外的每一条path。 有没有一个优雅的方式来做到这一点? 我可以使用“黑名单”方法,然后select性地将其从我想要的路线中删除吗? 我无法弄清楚如何。

Passport身份validationcallback不传递req和res

这个身份validation正常工作,我得到一个redirect: server.post(authPostRoute, passport.authenticate( 'local' , { successRedirect: '/', failureRedirect: '/login' } )); 这个authentication在呼叫回叫后挂起: server.post(authPostRoute, passport.authenticate( 'local' , function(){ console.log('Hitting the callback'); console.log(arguments)} )); 这logging了以下内容: { '0': null, '1': { id: [Getter/Setter], firstName: [Getter/Setter], lastName: [Getter/Setter], email: [Getter/Setter], addedOn: [Getter/Setter], active: [Getter/Setter], password: [Getter/Setter] }, '2': undefined } 但在整个文档( http://passportjs.org/guide/authenticate/ )看起来好像它通过req和res,但它显然不是。 然后调用callback的代码: node_modules \护照\ LIB \中间件\ […]

使用passport.js将本地策略连接到另一个(Facebook,Twitter,Google等)

我有一个node.js应用程序使用通行证(与一个修改的passport本地login策略)进行身份validationpipe理。 我想允许用户使用护照策略连接他们的社交networking帐户,但是从我所看到的现有身份validation(在请求对象上)在新的身份validation时被覆盖。 我应该如何处理这个?

Passport.js可选authentication

有没有从Passport.js的可选身份validation中间件? 比方说,我有一个路线, /api/users 。 我只想给公众提供一个用户列表,但是为了validation用户,我想添加更多的字段。 目前我只是一个愚蠢的自定义方法,做同样的事情,但我不知道是否: Passport.js已经提供这样的事情或 我怎么能使这个护照的一部分 ,像一个插件左右。 我的方法大致如下 function optionalAuth(req, res, next) { var authHeader = req.headers.authorization; var token = parseToken(authHeader); // just getting the OAuth token here if(!token) { return next(); } User.findOne({ token: token }, function(err, user) { if(err) { return res.json(401, {message: 'auth expired'}); }; if(user) { req.user = user; […]

保护Socket.io

我正在使用一个基于Node.js的https服务器,使用HTTP Basic进行身份validation(数据通过SSLencryption连接发送,这很好)。 现在我想提供一个应该是的Socket.io连接 encryption和 仅限经过身份validation的用户。 问题是如何做到这一点。 我已经发现,在连接到套接字时,我需要在客户端JavaScript代码中指定{ secure: true } ,但是如何在服务器端强制套接字连接只能通过SSL运行,而且它只能工作对于经过authentication的用户? 我认为SSL是简单的部分,因为Socket.io服务器只绑定到https服务器,所以它应该只使用SSL运行,并且不应该通过(另外)运行的http服务器运行它, 对? 关于另一件事,我没有丝毫的想法确保只有当用户使用HTTP Basic成功validation后才能build立套接字连接。 有任何想法吗?

基于令牌的authentication(在Node.js中)

更多关于一些关于实现基于令牌的authentication系统的build议的一般缺点问题,由于Node.js似乎并没有做好准备。 由于我们要构build一个无状态的API服务器来操作我们的数据存储,我们希望为用户提供一个授权令牌(一个“乘车票”),这个令牌将包含在API的每次调用中。 问题是如何以安全的方式生成这个令牌。 [idea 1] – 用户通过发送(user-id,password-hash)到服务器来请求auth令牌 – 服务器响应(user_id,expiry_date),由API服务器签名随机Key – 服务器可以检查每个token的有效性请求 – 服务器将需要在有限的时间内存储令牌 [思想2] – 同上,但避免发送密码哈希 – 用户请求身份validation令牌 – 服务器发送用户挑战,用户然后用他(user_id,password_hash)对哈希挑战 – 服务器validation这一点,然后生成令牌按照想法1。 [思路3] – 使用密码哈希本身作为authentication令牌,在每个请求中发送,以避免令牌pipe理问题 – 更简单但没有时间限制 [思路4] – 与2相同,但challenged_hashed_by_(user_id,password_hash)成为令牌并在每个请求中发送 感谢任何指针

是否有一个node.js框架提供像spring-security一样的授权和authentication?

有框架像 1.passport 2.everyauth进行身份validation 1.连接angular色autoeisation 有没有像弹簧安全提供一个框架?

用于Express.js的Rest APIvalidation和会话pipe理

我一直在研究RESTful身份validation,而且我仍然不能得到一个非常清晰的想法,我怎么能devise我的networking架构! 我有很多问题没有回答 我希望我的API能够被传送到移动设备和networking,而且我正在使用Express v4 我不想使用基本身份validation,因为很多post都提出了一个简单的方法,或者我可以使用Passport中间件,但是我想使用基于令牌的身份validation或类似的或更好的东西,并且我想进行身份validation,所以我可以更好地理解,但我不知道我该怎么做,或者如果我明白了解! 我将在下面简化我的预期身份validation架构: 新用户的注册 客户端 发布用户名和密码到服务器(我知道如果你想使连接安全的是使用https连接,否则我会暴露我的凭据,或者你有任何其他选项除了https?否则我将需要使用公共和带有时间戳的私钥,并在发送给服务器之前散列我的凭证??我怎么做呢?或者其他更好的select?) 服务器端 使用盐密码对密码进行哈希处理,存储哈希密码和salt,然后生成一个令牌ID并发送给客户端! 而令牌ID存储在会话中或使用REDIS数据库? 是不是使用会话再次违反REST? 但是,如果我不使用会话,我怎么能存储令牌ID并与客户端进行比较? 客户端 由于现在我有令牌ID,我怎样才能存储在我的客户端? 我应该使用Cookie吗? 如果是的话,这不会违反RESTful? 以及我的手机应用程序如何存储cookie? 我还有什么其他的select,除了cookie,我不能想到任何! 授权API 客户端 现在,我有令牌ID,每当我想向服务器发送请求时,我都会将其放置在授权头中。 服务器端 当收到请求时,服务器将检查令牌API,并将其与会话令牌进行比较,如果为真,则请求允许拒绝 这是一个快速应用程序授权的标准方式? 对于这篇冗长的文章我感到抱歉,但是我觉得我应该真正掌握authentication和授权,因为它很重要! 我希望有人能纠正我对REST authenticatino的误解,并回答我的问题,或者build议我一个更好的方法来做到这一点!

使用NodeJS服务器devise移动身份validation

我最近在为一个iOS应用程序的安全和用户身份validation问题挣扎,主要的问题是如何让用户注册任何第三方服务(或本地用户帐户),仍然保持安全和模块化的过程。 我提出的解决scheme是相当复杂的,我不是100%确定,如果所有这一切都是最佳实践,所以我想我会问,并得到什么build议和指针我可以修复,什么效果好,什么是坏等。 首先是authentication的问题。 我喜欢将authentication的想法与用户的想法分开。 对我来说,身份validation是由设备或客户端执行的,与特定用户无关,而用户帐户是由于身份validation而创build或检索的。 你可以做的是将客户端的身份validation视为一个进程,然后对用户进行身份validation(检查是否存在帐户等),以便有两层安全性。 假设客户端成功authentication,但用户密码错误,整体authentication失败,松散耦合这两个概念是有利的。 为了实现身份validation,我使用了JWT(JSON Web Tokens)通过cookie,原因很多。 1)它们在移动设备上工作得更好2)无会话,这使得服务器的实现变得更容易,并且据我所知,不受CORS攻击。 JWT似乎是使用移动设备时更好的解决scheme。 我使用了大量的npm库,最值得注意的是express-jwt和jsonwebtoken在服务器端进行身份validation。 正如我上面提到的,我不仅要执行身份validation,还希望允许用户注册任何他们想要的第三方服务,例如Facebook,Twitter,以减less注册期间的用户摩擦。 在思考这个问题之后,我花了很长时间search,提出了一个身份authentication系统的概念,authentication系统中的每个“账户types”被视为一个单独的身份提供者,并被推广为提供诸如access_token ,user_id,到期数据等。身份提供者很像在许多应用程序设置页面中看到的“已关联的帐户”。 在iOS的一面,我做了一个抽象类,为了支持每个服务,我创build了一个具体的子类, FacebookIdentityProvider , LocalIdentityProvider (email / password)等等。 在服务器端,我使用Passport模块来备份每种身份提供者。 例如,他们有一个facebook令牌模块,一个用户的电子邮件和密码等。所以我做了一个API路由/authenticate ,我的客户向序列化的身份提供商请求,并基于标识符string, local , facebook-token ,护照会根据提供的信息调用相应的子模块来validation该提供者。 总的来说,安全stream程如下所示: 客户端检查磁盘是否存在以前的JWT令牌(使用encryption箱进行安全存储)。 如果find令牌,客户端向我的verify端点发出请求。 该端点将validation令牌是否仍然有效并且没有过期。 如果令牌没有过期,客户端将被发送一个200,并与世界一切好。 如果不是,那么客户端将向我的refresh_token端点发出一个请求,其中包含已过期的令牌,它将尝试重新发送令牌。 如果失败,则客户端向我的authenticate端点发出请求,该端点只能由用户操作调用。 如果在磁盘上最初没有发现令牌,则在3的末尾发生同样的事情,客户端必须等待用户进行authentication。 所有这些工作都已经完成并且实现了,但是我仍然对一些事情有些模糊。 首先,我在express-jwt页面上读取了关于撤销令牌的内容。 什么决定了什么时候我应该撤销令牌并重新login用户? 每当它无限期地到期时,保持刷新令牌是没有意义的。 其次,当我将序列化身份提供者发送到服务器时,我传递一个额外信息的字典,这个信息将被护照用来根据进程进行身份validation。 如果成功,则为该用户创build身份提供者并存储在数据库中。 这是足够的,还是应该做更多的access_token和其他领域,我从一个成功的电话回来? 特别是对于Facebook SDK,当客户端通过应用程序进行身份validation时,我获得访问令牌,然后在客户端再次与服务器进行身份validation时,获得另一个令牌。 我有一个额外的想法是有人集成了每个请求通过头或查询parameter passing一个API密钥。 API密钥将被保密,并在客户端得到保护。 我认为这会做的是添加另一层“身份validation”,甚至还没有通过身份validation过程的客户端。 只有拥有api-key的客户才能够首先达到我的api,而且只有这些客户才能够进行身份validation。 我的背景是正式的networking安全(我从来没有任何好处),现在是全栈式移动开发,所以我对这个东西有更好的把握,但是我觉得好像在缺乏一些潜在的危险漏洞。 我不幸的是不能发布代码,因为这是我的业务,​​但如果有什么我不明确,只是评论,我会很乐意详细说明。 另外我觉得我应该提到,所有这些都是通过使用Nginxconfiguration的SSL完成的,并且我所有的iOSnetworking请求都是使用Overcoat进行的 […]

如何使用Firebase实施Steamvalidation?

我发现的只是这个旧的答案: https://groups.google.com/forum/#!topic/firebase-talk/rApG8QQd6t4 同事是否知道任何信息,或者Firebase工程师能否提供更详细的答案? 我目前正在尝试使用此库来validation用户使用Steam: https://github.com/liamcurry/passport-steam 然后使用Firebase自定义令牌在我的Firebase身份validation系统中获取用户。 我不知道这是否正确。 无论如何,我卡住了。 编辑: 这是我现在的代码: app.js var passport = require('passport'); var SteamStrategy = require('passport-steam').Strategy; app.use(passport.initialize()); passport.serializeUser(function(user, done) { done(null, user); }); passport.deserializeUser(function(obj, done) { done(null, obj); }); passport.use(new SteamStrategy({ returnURL: 'http://localhost:8080/users/steam/return', realm: 'http://localhost:8080/', apiKey: steamKey.steam, stateless:true }, function(identifier, profile, done) { profile.identifier = identifier; return done(null, profile); } )); users.js […]