问题标签 [role-base-authorization]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - How do I minimize round-trips to SQL with user-based authorization?
Context: MVC web service backed by a SQL DB. Say I have a user relation in my database, and a set of relations that reference it through a chain of FKs. So for example let's say I have the table:
where a sales person belongs to a certain car dealership, and so do cars. Sales people should only be able to see cars that belong to their specific dealership. I have a few options here:
I can bake the authorization business logic into the SQL query itself:
assuming the caller has verified that the sales_people id is legit and prevents trivial spoofing of that id, then the query above would prevent a user from getting hold of cars that aren't his. This could probably be extended to an arbitrary # of tables as long as the join isn't too massive.
Upside? One single DB call.
Downside?
- the authorization business logic here is very basic. User referenced by one of those tables? Sure, you can pass. However let's say I have to have more complex access rules. It's likely they might simply not be doable with one simple query.
- It's hard to tell if the user requested an unauthorized row OR if the row is authorized but doesn't actually exist, so that makes error reporting tricky. You wouldn't know if you should report a 200 or a 403 (although depending on the type of API you might want to always use 200 in these cases to prevent exposing too much information to an attacker).
The other option I see is to make extra queries before or after the fact to validate the data is indeed accessible to that user. E.g. get list of ids of cars the sales person is authorized to get and THEN perform the query on that subset, or the exact other way around.
The upside is obviously that I can make more calls and run more logic in the business layer and be as sophisticated as I want.
The downside is that I will be generating more DB traffic which could be a deal-breaker depending on how frequent that request is made.
I'm probably missing a few other options here, and I'd love to hear how you've solved the problem before. Is there a better way?
asp.net-mvc-4 - 在 MVC 4 中实现基于角色的安全性
我正在尝试在 MVC 4 中实现基于角色的安全性。在搜索了一段时间之后,我无法弄清楚如何去做。我了解到 MVC 4 有它自己的 SimpleMembership 功能,但我无法实现这个“不是那么简单(对我来说)”功能。
请提供“如何实施”的任何链接。
提前致谢
jquery - 对未授权操作的 Ajax 请求返回 div MVC 4 内的登录页面
我正在构建 ASP.Net MVC 4 应用程序,并将 [Authorize] 属性放在控制器的顶部。
当会话结束并且我尝试从该控制器触发对方法的 ajax 请求时,由于未经授权的访问尝试而重定向到登录页面是在 div 内完成的。这是我做的一个示例ajax:
这个 ajax 接受一些参数并执行这个方法:
这是结果的屏幕截图。
如何处理未经授权的错误以将整个页面重定向到登录页面而不是用登录页面替换 div 的内容?
spring-security - 使用基于 memberOf 属性的 ldap 进行 Spring 安全认证
我正在对 ldap 使用 spring 身份验证。如果提供的用户 id 和密码存在于 ldap 中,那么我能够获得用户登录。我想根据 LDAP 中用户的 memberOf 属性对此进行限制。如果用户的 memberOf 属性具有特定的 CN 值(CN=adminaccess 或 CN=superadminaccess),则身份验证/授权应该通过。否则身份验证/授权应该失败。
我总是使用上述配置进入拒绝访问页面。如果我从 security:intercept-url 中删除 access="hasAnyRole('ROLE_ADMINACCESS','ROLE_SUPERADMINACCESS')",我可以始终使用有效的用户/密码进行访问,即使该用户不是 adminaccess 的一部分(我希望会受到限制,因为我的组 -search-base 指定了 CN=adminaccess)。想知道应该是什么配置:
- 将访问限制为 memberOf CN=adminaccess 和/或 CN=superadminaccess 的用户
- 指定正确的组搜索库。如果我只指定 CN=Users,我会超时,因为这违反了我们的公司 ldap。当我在 LDAP 浏览器上查找用户时,我找不到可以提供帮助的“ou”。使用我上面的配置 group-search-base="CN=adminaccess,CN=Users",我没有超时,但我认为它也不正确
php - php 基于角色的访问控制系统 - 基于页面的权限
我要设计一个系统。系统有 3 种用户类型。管理员、经理、开发人员。应用程序包含 100 个 php UI 页面。
- 数据库表是这样的(页面、管理员、经理、开发人员)。page 是页面名称,admin、manager、developer 是布尔字段。如果特定字段为 1 或 true 角色具有访问权限。
- 现在我需要将数据库与所有 100 页同步。我知道登录用户属于哪个角色。但我不知道如何传递页面并将其与表匹配以检查特定用户是否具有访问权限。
我的计划是把 checkpermission($_SERVER['PHP_SELF'], $role); 到每一页。我应该如何正确地做到这一点?如果我把这一行放到 header.php 中可以吗?会是糟糕的设计吗?
我主要关心的是可扩展性。他想在不做太多改动的情况下插入另一个站点。我们也想给一个页面。管理员可以使用该页面来授予、删除权限。将子目录添加到权限树。
web-services - Web 应用程序的基于角色的授权系统?
我目前正在设计一个支持多种类型的用户角色的 REST 样式的 SQL 支持的 Web 应用程序。我正在寻找为它实现既简单又强大的授权抽象的想法。
系统中的分层角色将遵循以下原则:
这个系统的一个真实世界的例子是:“我是一名学校管理员,我有我管理的老师,他们都有包含学生的班级”。
我在考虑 UNIX 模型的思路,除了一个管理员的数据孤岛不能与另一个管理员的重叠。在上面的示例中,一所学校永远不应访问另一所学校的数据。
- 管理员角色将对他下的每个组和用户拥有完全的超级用户权限。
- 组所有者只能访问组本身及其下的用户。
- 一个数据仓库可以有多个管理员,每个组可以有多个组所有者等。
- 管理员/组所有者/用户通常不会改变他们可以做什么,因为他们的能力几乎是固定的。将改变的是他们可以对哪些数据采取行动。
我绝对肯定那里必须有一些通用模式,我可以开始并围绕它开发一个自定义授权系统,该系统可以根据我的系统需求进行微调。有 ACL,有类似于 Rails 的 CanCan 的库,我相信还有更多。
我很想知道我的选择是什么以及一些权衡是什么。资源、阅读材料、文章、书籍都会很棒。很可能我必须为这个 Web 应用程序实现一个类似于 Parse.com 的 API(即 API 客户端可以将自定义查询编写为 JSON 映射,并且这些查询将在后端转换为 SQL),并且防止这一点非常重要在各种不同的查询变体中进行未经授权的访问。
谢谢你。
PS 澄清一下,我实际上不在 Rails 上,我使用的堆栈没有现有的授权库,因此我需要自己动手。
asp.net-mvc-4 - MVC 4 Razor 中基于角色的访问
我正在使用 MVC 4 Razor(基于 Windows 的身份验证)开发 Intranet Web 应用程序。我想获得指导以正确实施以下方案。
我的应用程序有 2 个角色 - 人力资源和经理。
我有一个视图,它有一个显示员工类型的单选控件。以下是值。1. 临时 2. 永久 3. 实习生 4. 顾问
HR 和 Manager 角色用户都可以访问上述视图。但是要求 - HR 应该看到“Permanent”和“Intern”值,而 Manager 应该在 Radio 控件中看到“Temporary”和“Consultant”值。
以上 4 个值来自数据库表。
我想根据角色及其对 Htmlcontrol 和 Htmlcontrol(单选按钮)绑定数据的访问权限来授权用户。
我更愿意使用通用的方式来处理这种情况,而不是使用视图中的 if 条件来过滤基于角色的数据。
请指导我处理这种情况所需的方法。谢谢。
sql - REST 中的数据级授权
我有 Project(id,name,userId)表和 Activity 表(id,title,description,project_id)。project_id 是指向 Project 表中 id 的外键。项目数据只能由创建它的用户访问。
现在,我公开了 REST Api 来为特定项目创建新活动:
方法:POST
Body { “title”:“测试活动”,“description”:“测试描述”,“project_id”:“123”
}
它由 Web 应用程序使用。但是,当然它也可以被外部 REST 客户端使用。
问题:尚未创建“项目 P”的用户可以通过在上述 Rest 调用中提供“项目 P”的 id 来将活动添加到“项目 P”。我想防止这种情况发生。我当然可以通过从给定的项目 ID 中获取项目数据并检查当前用户是否拥有该项目来编写验证逻辑,但我想要更通用的解决方案。另外,请注意,这只是插入问题。有什么想法吗 ?
asp.net - MVC 5 roles based authentication with mvc 5.1.0
I have been having trouble with using roles based Authentication in my project.
I have set-up some roles and linked them to a user.
This works:
If I am not logged in it asks me to login.
However If I change it to:
And I try access it from the user with that role It asks me to login.
So I did some goggling and I found this post: Link and they suggested to add:
In my web config. Which I did and it then allowed me to access the controller. But I noticed that it let me access the controller if I was in that role or not.
I am using Cookies Authentication for my project. So I think that I am getting confused between the different types of authentication.
So I need some advice on where to go from here:
I simply want to make use of the roles which is implemented by the default project, I have populated the database etc. I just cant get my filters working.
angularjs - 如何使用 AngularJS 对页面进行基于角色的访问?
我想对 AngularJS 中的页面进行基于角色的访问。
基于角色的页面应该显示给用户。
任何人都可以给我一个例子吗?这应该是最好的解决方案。