Articles of acl

如何跨多个模块访问节点acl?

我有一些麻烦了解如何使用mongoose模块使用节点ACL 。 只要一切都在一个文件中,我就可以很好地运行。 但是,如果我想将路由分解成单独的文件,我怎样才能访问其他模块中的acl实例? 我可以得到acl与下面的代码工作就好了。 它初始化,在数据库中创build集合,并向用户添加权限。 // App.js const mongoose = require('mongoose'); const node_acl = require('acl'); const User = require('./models/User'); mongoose.connect(/* connection string */); acl = new node_acl(new node_acl.mongodbBackend(mongoose.connection.db, '_acl')); acl.allow([ { roles: ['guest'], allows: [{ resources: 'login', permissions: 'get' }], }, { roles: ['admin'], allows: [{ resources: '/users', permissions: '*' }] } ]); var […]

LoopBack用户特定的数据过滤/访问

目前正在testing一堆框架以确定我公司未来使用的良好候选人,LoopBack通过几乎完美的需求吸引了我的注意力。 但是,我感觉到他们的ACL模型在某些情况下是相当有限的。 让我们看看以下用例:在合作旅游pipe理网站上,用户可以创build和/或join公共旅行。 我们假设以下API: /Travels列出用户拥有的所有旅行 /Travels/public列出所有公共旅行 /Travels/{id}/join使用给定的IDjoinTravel build立这样一个API是否需要重新发明轮子? 或者是一些中间件实施? 每个字段的ACL也是一样。 假设你有一些清单项目,一些手动添加,一些自动生成。 除了更改“完成”字段之外,是否只能在自动写入操作中阻止写入操作?

Node-acl方法“isAllowed”总是意外地返回false

我正在试图用mongodb实现node-acl,并表示允许控制每个文档,例如 用户查看所有文档 用户只能编辑/删除自己的文件。 我采取了这种方法: 当用户注册时,我使用后保存挂钩来创build一个用户并为其分配一个angular色: UserSchema.post('save', function(doc) { var roles = doc.roles || []; if (!roles.length) { roles = ['user']; } acl.addUserRoles(doc._id.toString(), roles, function(err) { console.log(err, 'added user'); }); }); 现在,用户已经在系统中创build,他们现在可以创build一个旅程。 像上面一样,我使用后保存挂钩将给定的权限添加给给定的用户在给定的资源: TripSchema.post('save', function(trip) { acl.allow(trip.user.toString(), '/trips/' + trip._id, '*', function(err) { }); }); 然后,我使用自定义的简单中间件function来检查给定的用户是否有权访问给定的资源: var middleware = function (req, res, next) { acl.isAllowed(req.user._id.toString(), req.path, […]

基于关系的节点js中的ACL

我试图在Node js中实现某种权限框架,使用sequelize作为ORM(与Postgres)。 经过几个小时的研究,我能find的与现有npm模块做的最接近的事情是使用acl和acl sequelize来支持我的堆栈。 问题是,它看起来像acl模块分配一个angular色,该angular色将获得一组权限到特定资源的所有实例 。 但是,我需要根据该用户的现有关系对实例进行权限许可。 作为一个例子,考虑一个简单论坛的权限系统。 它为每个angular色提供这些权限: // allow guests to view posts acl.allow("guest", "post", "view"); // allow registered users to view and create posts acl.allow("registered users", "post", ["view", "create"]); // allow administrators to perform any action on posts acl.allow("administrator", "post", "*"); 假设我也想为注册用户添加编辑他们自己post的function,并且用户与他们创build的所有post有关系。 有没有办法让这个模块做到这一点,或任何其他模块,可以在数据库/ ORM级别上支持这种行为? 如果没有,我必须实现一个自定义的,最好的方法来创build这样的东西。

“访问资源权限不足”:使用Mongoose + Express的ACL中间件

我正在尝试为基本路由validation设置ACL中间件 。 在这个例子中,我只是想确保用户(在这个例子中是我)拥有'pipe理员'权限。 我的路线如下所示: // define the home page route router.get('/', acl.middleware(1, '594a984a9815beb8219dca22', 'admin'), function (req, res) { acl.userRoles('594a984a9815beb8219dca22', function(err, roles){ res.send(roles) }) }) 用中间件,我得到的消息是: HttpError: Insufficient permissions to access resource 如果我在没有中间件的情况下运行这个路由,usersRole()函数确实会返回 ['admin'] 作为回应。 我不知道还有什么需要发生的ACL来承认我作为pipe理员。 我显然有'pipe理员'的angular色。 UPDATE 这是连接代码: var dbConn = mongoose.connect(configDB.url); // connect to our database acl = new acl(new acl.mongodbBackend(mongoose.connection.db)) 我的config.url是: module.exports = […]

在Node.js中支持MySQL的ACL

我正在使用Node.js与MySQL。 在npm中是否有一个支持node.js和MySQL的ACL库? 我没有find类似的问题在stackoverflow的答案。

如何将jwtauthentication与ACL混合

我已经能够使用JWT策略实施护照,并且运作良好。 我的jwt保护路线看起来像这样… app.get('/thingThatRequiresLogin/:id', passport.authenticate('jwt', { session: false }), thingThatRequiresLogin.findById); 现在我需要限制某些东西的访问权限,只有属于某个angular色的login用户。 我希望我可以这样expression: app.get('/thingThatRequiresLogin/:id', MAGIC, thingThatRequiresLogin.findById); 其中MAGIC = require logged-in users, but only those with role x or y node_acl似乎是一个很好的解决scheme,我理解了一点,但是我发现这在文档中… 我们可以保护这样的资源: app.put('/blogs/:id', acl.middleware(), function(req, res, next){…} 中间件将保护由req.url命名的资源,从req.session.userId中select用户,并检查req.method的权限,所以上面的代码就是这样的: 我如何将这与我的jwt策略混合? 我唯一的想法是放弃node_acl middleware ,而是添加acl检查代码到我的jwt策略。 但那是我遇到麻烦的地方。 我的jwtfunction如下所示: passport.use(new JwtStrategy(jwtOptions, function(jwt_payload, done) { User.findOne({id: jwt_payload.sub}, function(err, user) { if (err) { return […]

loopback-component-storage acl 401错误

容器模型看起来像这样: { "name": "container", "base": "Model", … "acls": [ { "principalType": "ROLE", "principalId": "$everyone", "permission": "DENY", "accessType": "*" }, { "principalType": "ROLE", "principalId": "admin", "permission": "ALLOW", "accessType": "WRITE" } ] } 当我发布图片时,它会返回一个401错误。 我确定我以“admin”用户身份login,因为我在json模型中使用相同的访问令牌和相同的acl发出两个请求。 对于第一个(不是容器)它是有效的,但对于容器不是。 容器ACL有问题吗? – – -编辑 – – – 从DEBUG开始= loopback:security:acl它返回: —ACL— model container property * principalType ROLE principalId $everyone accessType * permission […]

高级访问控制库

我有兴趣为用户访问软件系统内的资源进行高级访问控制。 我在医疗保健IT方面工作,年轻的我经常低估医疗保健中基于angular色的访问控制的复杂性。 但是这个问题应该适用于任何具有复杂ACL要求的人。 相当长一段时间, php gacl一直是我用于处理Health IT系统内非常复杂的ACL控制问题的目标库。 但是我现在正在更多地使用javascript和具体的节点。 我已经searchnpm图书馆以一般化的方式做访问控制。 我想支持定义操作,而不仅仅是用户和资源(3层而不是2层),我希望拥有用户,操作和资源组,并且暗示我想拥有ACLinheritance权。 从“星球大战”主题手册到该图书馆的典型例子是这样的规则: 所有船员都有(访问,configuration和使用)枪支,引擎,驾驶舱和rest室,期待chewie。 所有机器人都(访问和使用)进入驾驶舱,但只有R2D2configuration访问引擎。 汉族拥有各种types的资源。 这里的基本概念包括你可以制定适用于任何一组用户(例如船员,乘客或机器人)或个人(汉和Chewie)的规则,你可以有不同types的访问(访问,configuration,使用)或者对不同资源(发动机和驾驶舱)进行访问(主机访问=configuration+修理+使用)组,也可以将其分组,(战斗站=驾驶舱+枪)。 这允许configuration非常复杂的访问控制规则,并且相对简单的基于组的pipe理。 到目前为止,我在php-gacl之外没有见过这样的东西。 我看了一下精彩的基于JavaScript的ACL项目,所有这些都宣传简单易用,而不是全面。 其他典型的php ACL库也是如此(例如Zend ACL ) 是否有人在为节点“高级ACL”项目工作? 有没有更好的方法,我应该找的地方? php-gacl有三个部分,一个是基于php的pipe理GUI(这是公认的过于复杂),另一个是规则上的CRUD API(可以很容易地转换成REST接口,我认为)和一个非常小的提供ACL检查function的文件。 从技术上讲,只有最后一个types需要完全移植到节点才能使该软件模型正常工作? 在更深层次上,我想了解哪些方法已经成功地用来处理这个问题。 这个问题通常如何解决? 对于那些根据node / javascript甚至特定的数据库方法(关系vs非关系)来有效讨论这个问题的人来说,奖励点。 我知道有很多理论基础来做这个对错(比如对RBAC和ACL有很多意见)。 我想要的是理论上坚实的东西,或者从图书馆的angular度来看,它仍然是“正常的”。 我专注于Javascript,但是理解其他语言如何解决这个问题实在是太好了。

适合NodeJS的RBAC库

我们正在为基于angular色的访问控制(RBAC)寻找合适的Nodejs库。 我们做了一些调查,发现最stream行的解决scheme是https://github.com/OptimalBits/node_acl 它是基于Redis和Express中间件支持的访问控制列表模块。 这个图书馆有非常好的支持,而且非常受欢迎。 但在同一时间这里是另一个解决schemehttps://github.com/ForbesLindesay/connect-roles 这是授权提供商,旨在与连接或expression。 我看到最近一次承诺这个回购是在1年前完成的。 所以支持不是很好。 有人可能会build议什么库会更好地处理复杂的应用程序中的angular色和权限? 先谢谢你