Tag: 基本authentication

未请求的Socket.IO连接

当我导航到我的网站的一个子页面时,我的socket.io服务器正在运行索引页面的连接模块。 导航至www.example.com/query时,完整的控制台日志 authenticated updated ==> { GbLZ5jxHz0S5uyNNAAAA: { user: 'yrn1jro2fw1nk4dyy4', group: 'uehw1o2grq1oy11y9xrgyw' } } client connected to INDEX with id GbLZ5jxHz0S5uyNNAAAA preloading index client connected to QUERY with id GbLZ5jxHz0S5uyNNAAAA preloading query 我的主要问题涉及到我得到第二和第三行。 我希望连接到“QUERY”,而不是“INDEX”。 当我导航到www.example.com时,控制台按照预期打印一个连接。 这是我整个server.js文件,我只是简化和运行生成上面的简化控制台日志。 你可以忽略authentication的东西,我主要包括那些可能会觉得有用的人。 var express = require('express'); var app = express(); var server = require('http').Server(app); var io = require('socket.io')(server); var util […]

在使用Passport-local作为validation策略的快速应用程序中,不受保护的端点

我想知道如何创build一个端点(GET,POST等),可以访问没有任何身份validation。 这是我的代码: router.use(AuthenticationManager.ensureAuthenticated()); router.use('/', require('./index')); router.use('/path-1', require('./path1')); router.use('/path-2', require('./path2')); 所有的端点将享受Authentication Manager 。 如何仅禁用./path1或./path2中的某些端点validationpipe理器?

为api访问生成安全令牌

我需要生成一个安全令牌访问一个API。 用户将auth和成功auth我需要生成一个令牌。 重要提示:我有一个要求,我需要能够随时撤销用户对api的访问权限。 选项1: 我可以生成一个随机string,并将其用作令牌。 将令牌和用户存储在数据库中。 当用户通过令牌时,我检查数据库的令牌,如果它存在去… 这使我能够通过删除用户令牌来撤销访问。 如果他们试图重新login,令牌消失,他们将无法访问。 我也可以根据时间从数据库中删除令牌。 我正在使用nodejs并已经看到这个: 在Node.js中安全随机令牌 require('crypto').randomBytes(48, function(ex, buf) { var token = buf.toString('hex'); }); 这真的很安全,因为有人不能猜测我生成的令牌吗? 选项2: 使用像jwt的东西。 在身份validation用用户ID生成一个jwt。 当用户通过一个请求的jwt时,我确信jwt是有效的,如果是这样的话,抓取用户ID和好去。 这看起来更安全,因为jwt可以防止篡改。 问题是撤销对API的访问。 我可以存储所有jwts(直到它们到期)在数据库中,请求validation的jwt,并确保它在我的分贝。 如果我想撤销,我可以从数据库中删除它。 Con在这里是我现在有validation的jwt和查找确保其在我的分贝的开销。 有使用jwt撤销访问的好方法吗?

使用Flux / React应用程序存储authentication详细信息

我目前正在使用flux和nodejs应用程序。 具体可通的。 对于用户身份validation,我使用passport.js,它简化了对用户进行身份validation,创build会话和validation会话的过程。 一旦会话被validation,我的服务器发回一个用户对象。 { _id: foo, email: foo@bar.com } 然后,我的身份validation存储拥有一个IsLoggedIn方法来返回商店是否有用户。 但是我意识到这是不安全的,就好像商店上的数据被操纵一样,即使用户没有实际login,商店也会返回isLoggedIn。 我目前的处理方式是,当用户调用需要身份validation的apis时,我会在api调用中检查身份validation。 所以基本上,如果恶意用户使用flux存储数据,他们可能会看到针对login用户/不同组件的操作,但是他们无法真正修改任何内容。 我打算为用户pipe理员权限做同样的事情。 我的问题是,有没有更好的方法来处理这个问题? (即更好的方式不暴露数据到客户端)

用户和来宾两个不同的模板? 或者dynamic改变视图使用客户端variables?

情况1 我有一个控制面板界面(HTML / CSS),这是一个注册用户和非注册用户。 我将使用客户端Ajax来检查是否有有效的用户会话。 如果返回一个200(好的),那么我会让Angular隐藏界面的访客部分,并显示用户部分。 (基本隐藏login表单并显示用户选项部分)。 如果它返回一个400,反之亦然。 情景2 我有一个客人的控制面板界面,一个为注册用户。 在请求控制面板部分接口时,我将使用服务器端路由器/控制器逻辑来检查有效的用户会话。 如果是,则响应发送controlPanel-user.html。 如果是false,则发送controlPanel-guest.html。 我试图寻找适合这种情况的理论,但找不到具体的情况,也许这里有人是比我更好的Google员工。 注意:客户端界面更新不会真正危害我的系统,不pipe这个人是否能够访问html视图的用户版本,他们仍然会被拒绝访问任何API,没有适当的服务器端身份validation。

通过HapiJS获取authentication错误

我已经创build了这个简单的插件: import bcrypt from 'bcrypt'; import Joi from 'joi'; import DynamoDBClient from '../lib/DynamoDBClient'; exports.register = (server, options, next) => { server.auth.strategy('simple', 'basic', { validateFunc: (request, email, password, callback) => { DynamoDBClient.findUserByEmail(email) .then(user => { if (!user) { return callback(null, false); } bcrypt.compare(password, user.password, (err, isValid) => { return callback(err, isValid, { id: user.id }); }); […]

将未经身份validation的用户redirect到使用node.js和angularjs的默认URL

我已经使用node.js restify和angularjs来创build一个没有用户pipe理的Web应用程序。 现在,我想添加用户pipe理function。 用户需要login才能访问networking应用程序。 如果他们没有通过身份validation,他们将被redirect到默认的urlwww.webroot.com/login.html 。 我正在查看正确的node.js模块来实现此function,但目前处于亏损状态。 引起我注意的两个模块是passport-restify和passport-http 。 https://www.npmjs.com/package/passport-restify https://www.npmjs.com/package/passport-http 这里有一些问题来实现这个function; 哪个node.js模块可以用来实现这个用户loginfunction? 两者有什么区别? 实际的URLredirect操作是使用angularjs还是node.js完成的? 用户login的示例代码示例是什么? 到目前为止,我find了文档,但很less的示例代码。

根据MongoDB检查login凭据不起作用

router.post('/checkuser', function(req, res) { var db = req.db; var userEmail = req.body.useremail; var password = req.body.password; var collection = db.get('usercollection'); collection.find( { "email": userEmail }, function (err, doc) { if (err || !doc) { res.redirect("login"); } else { res.redirect("userlist"); } }); }); 这段代码应该检查MongoDB中的login凭据,如果值不匹配,则返回false 。 但是它总是redirect到userlist.jade文件。 有人可以解释为什么吗?

无法使用节点请求模块进行基本的HTTPvalidation

我正在使用mochatesting我的应用程序,我想testing一个HTTP响应头代码,这取决于我通过基本的HTTP身份validation发送给它的凭据。 在客户端,我做了这样的AJAX调用服务器: $.ajax({ type: 'GET', url: url, beforeSend: function(xhr){ xhr.setRequestHeader("Authorization", "Basic " +btoa("username:password") ); }, success:function(rsp){ // do whatever I need; } }); 它完美的作品。 它的凭据是错误的,那么该网站将回应智慧302 在我的testing文件( 摩卡 ),我尝试发送相同的请求,但由于某种原因,它不工作。 这是我尝试的不同方式: it('should return 302 because wrong credentials', function(done){ var auth = "Basic " +new Buffer("username:password").toString('base64'); var options = { url: url, headers: { "Authorization": auth } }; […]

NodeJS – 使用Active Directory进行身份validation

我正在构build一个nodejs服务器,并决定通过活动目录执行身份validation。 所以我的第一个问题是:是否有可能与nodejs? 如果是这样,有人可以指引我的相关文章/文档/插件? 我的第二个问题是关于authentication本身。 我的服务器是宁静的,所以我基本上必须提供某种forms的标识每次我从服务器请求的东西。 我虽然关于下一个stream程: 在客户端的login页面,我发送用户名和密码到服务器。 在服务器上,我使用客户端发送的凭证对Active Directory进行身份validation。 一旦我收到来自Active Directory的响应,我检查它是否是有效的响应,如果login成功,我还检查用户是否在Active Directory中具有适当的权限来使用我的服务。 一旦所有的validation,我为用户创build一个令牌。 来自客户端的每个请求都必须包含有效的令牌。 这似乎是解决这个问题的最为标准的方法,它比每个请求发送用户名/密码和每次激活方向validation要简单得多。 但有些事情打扰我。 例如:如果系统pipe理员决定从活动目录中删除用户或删除他的权限以使用我的服务,该怎么办? 该用户仍然有一个令牌,允许他访问我的服务。 我可以为令牌设置一个到期日,但除非这个到期日是一秒钟,否则服务器将不会真正与活动目录同步。 你认为这个标记是解决这个问题的方法吗? 或者我应该通过发送用户名和密码每个请求来做到这一点? 另一种方法是给客户端一个令牌,但在服务器上,将该令牌与活动目录的用户名和密码相关联。 每一个请求,服务器将与活动目录进行身份validation? 这是一个好方法吗? 谢谢,Arik