问题标签 [role-based-access-control]
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.
reactjs - React Router v5.1.2 Public & Protected Authenticated & Role Based routes
目标是让 /login 作为唯一的公共路由,一旦登录用户就有基于用户角色的路由。使用 Keycloak 完成身份验证我从 keycloak.idTokenParsed.preferred_username 获取用户:管理员、经理、工程师、操作员。如果操作员尝试转到角色受限路由,则会被重定向到 /notauthorized 页面。(此部分未完成)如果未登录用户将被重定向到 /login 页面。(这部分已完成/工作)
有一个更好的方法吗?在 Routes.jsx 中不重复路由和添加其他用户有点乱。如何实现角色受限重定向到 /notauthorized?
App.js(没有 mapStateToProps、mapDispatchToProps 和导出默认 App 的所有导入和缺少的底部部分)
Routes.jsx(缺少所有进口商)
java - 春季启动,hasAnyAuthority 无法正常工作
在我的配置(HttpSecurity)中,我有:
在这个特定的端点:
我把上面:
但是,当我使用 postman 使用角色“ROLE_ADMIN”(未授权)的管理员用户对其进行测试时,没有 403 并且请求正常通过。
信息:
AuthoritiesConstants.USER = "ROLE_USER";
AuthoritiesConstants.BANK = "ROLE_BANK";
AuthoritiesConstants.ADMIN = "ROLE_ADMIN";
c# - ASP.NET Core 3.1 中基于角色的授权,带有 Identity 和 ExternalLogin
我是 .NET Core 的新手,我正在尝试在 .NET Core 3.1 项目中设置基于角色的授权。我相信我点击了每个在线讨论它的教程和线程。我的问题是它似乎很容易在教程上工作,但它对我不起作用。根据我发现的教程,我所要做的就是为数据库中的用户分配一个角色,然后[Authorize(Roles="roleName")]
在控制器的操作之前使用。当我这样做时,对于具有指定角色的用户,我总是会收到 403 错误。当我使用 时userManager.GetRolesAsync(user)
,我看到用户具有角色。当我使用 [Authorize] 向此操作发出请求时,它会在用户登录时按预期工作。
我在调试模式下检查了当前用户的 ClaimsPrincipal.Identity,我发现RoleClaimType = "role"
. 我检查了当前用户的声明,发现它没有“角色”类型的声明。这是如何[Authorize(Roles="...")]
工作的?它看起来像索赔吗?如果是这样,我如何获得用户角色的声明?用户登录此应用程序的唯一方法是使用 Google 帐户。那么,如果它们由 Google 登录管理,我应该如何添加声明呢?
这是我在 Startup.cs 中的代码
这是控制器动作的示例
当我在没有 [Authorize(Roles = "Admin")] 的情况下向此操作发出请求时,我可以看到当前用户具有角色 Admin,但是当我添加它时,我收到 403 错误。
我究竟做错了什么?我觉得我在某处遗漏了一行或类似的东西,因为在我找到的教程中这一切似乎都很简单。
node.js - 授权每个请求与从缓存中删除用户会话
我正在使用 PostgreSQL 数据库运行 NodeJS express 应用程序。我正在使用节点缓存模块作为快速会话管理的存储。
该应用程序有一个用户管理方案,它由两种类型的用户组成,普通用户和管理员。管理员可以执行普通用户可以执行的所有任务。除此之外,管理员可以在应用程序中添加/删除用户,还可以向/从用户授予/撤销管理员权限。所以我的问题来了:
如果管理员在用户 X 仍然登录时从工具中删除了用户 X,那么在用户 X 发送到服务器的下一个请求时,他必须自动注销。类似地,如果管理员在用户 Y 仍然登录时撤销了用户 Y 的管理员权限,那么在下次点击服务器时用户 Y 应该会自动注销。
经过一番研究,我想出了两种实现方式:
1)授权每个请求- 即编写一个中间件来查询数据库并检查用户是否仍然具有工具访问权限。但是这种方法对于每个请求都有一个额外的数据库命中的开销。我认为这是一个很大的开销,因为在我的应用程序中,用户不会经常被删除,而且用户在已经登录时被删除的可能性也很小。
2)不要授权每个请求。相反,当删除用户的工具访问权限时,从缓存中删除该用户的会话(如果有)。因此,当该用户发送请求时,他将被注销,因为他的会话不再存在。但是,这样做并不是那么简单,因为节点缓存(甚至 Redis)没有任何“按值删除”功能。为此,我必须搜索缓存中的所有键,找到与需要删除会话的用户的 userID 值相同的键,然后删除这些会话。
我想知道哪种方法更好更有效,或者是否有第三种更好的方法。
azure - 如何在 Azure 中创建自定义角色,以便其他用户只能查看 blob 容器中的文件列表,但不能查看其内容(RBAC)
如何使用访问控制 (IAM) 在 Azure 中创建自定义角色,以便其他用户能够查看 Blob 容器中的文件列表,但不能查看其内容。此外,用户不应进行任何更改。
identityserver4 - 使用身份服务器 4 和客户端凭据授予类型的基于角色的访问
我刚开始使用 Identity Server 4。
我正在尝试使用 Client Credentials 授权类型来保护 API。
我在 IS4 中有一个 API 设置:
我也有以下客户端设置:
我在 API 中有一个要保护的控制器:
如果我随后创建一个令牌请求,如下所示:
这允许我调用 API 并访问资源。完美的!
但是,我想用一个角色来保护控制器,例如
所以我的两个问题是:
1:如何使用客户端凭据设置基于角色的授权?
2:由于客户端凭据未链接到用户,我如何保持记录更改的审计跟踪,例如供应商 X 由 userId 5 更新,等等。
谢谢
azure - Azure Cosmos DB 使用基于角色的访问控制读取数据
我在 Azure 中有一个 CosmosDB,我想让用户访问以读取各种集合中的数据。
我尝试赋予他们“读者”角色,让他们确定存在 CosmosDB,并且他们可以看到一些元数据。但他们无法访问内部的数据
我为他们分配了“Cosmos DB 帐户阅读器”,结果更好。
但在我看来,“读者”角色应该取代“Cosmos DB 帐户读者”角色。还是我在这里走错了路?我相信“读者”角色赋予了*所有读取权限。
编辑:在portal.azure.com
上使用内置的“数据资源管理器”似乎没有问题。
真正的问题是使用cosmos.azure.com和使用 ActiveDirectory 登录 inn,并没有让用户看到任何具有“Cosmos DB 帐户阅读器”角色的内容。可能需要用户具有写访问权限。
postgresql - 多租户应用程序中基于角色的权限
设想:
我们有一个多租户应用程序,其中每个租户都有自己的模式。有一个公共模式,其中存在一个包含每个租户记录的表。所以有一个超级管理员可以创建租户并将管理员分配给新创建的租户。
为了实现 RBAC(基于角色的访问控制),我打算做的是将每个角色表放入租户模式中,并实现一些中间件来检查授权。这是隔离模式环境中的良好架构吗?
security - 如何保护使用 ado.net 开发的 web api?
我已经使用 ado.net 实现了 Web API 并在托管中上传,但是这些 Web API 不安全,任何人都可以在没有登录的情况下访问,现在我想通过基于角色的身份验证来保护它们,我该如何保护?我想这样做只有登录用户才能访问它们。
jenkins - 如何通过 groovy 工作流程从登录的用户 id 中获取 jenkins 中的角色名称
我的要求是从基于角色的策略中获取角色名称,这些策略与通过 groovy 脚本控制台登录 jenkins 的用户相对应……目前我没有为此获得任何预定义的方法。