Permissions 分布式应用程序中基于角色的权限

Permissions 分布式应用程序中基于角色的权限,permissions,distributed,roles,access-control,rbac,Permissions,Distributed,Roles,Access Control,Rbac,我正在开发一个由不同语言编写的模块组成的应用程序(Java和C#是其中之一),运行在不同的机器上(目前,在局域网内;因此它不是一个大的应用程序,但它是分布式的)。我们正在寻求一种合理的方法来实现功能的基于角色的权限(配置谁有权调用功能的哪一部分) 目前,这是通过一个自定义数据库表来解决的,该表将用户名映射到允许使用的对话元素的GUI ID(这不是我的主意,只是以防万一……),并使用我们的模块之一“管理”功能来设置这些值。我有感觉,但不是很确定,直接写入这个表不是一个好方法,特别是对于并发写入(管

我正在开发一个由不同语言编写的模块组成的应用程序(Java和C#是其中之一),运行在不同的机器上(目前,在局域网内;因此它不是一个大的应用程序,但它是分布式的)。我们正在寻求一种合理的方法来实现功能的基于角色的权限(配置谁有权调用功能的哪一部分)

目前,这是通过一个自定义数据库表来解决的,该表将用户名映射到允许使用的对话元素的GUI ID(这不是我的主意,只是以防万一……),并使用我们的模块之一“管理”功能来设置这些值。我有感觉,但不是很确定,直接写入这个表不是一个好方法,特别是对于并发写入(管理模块)和读取(虽然数据库事务应该提供并发处理…但在这种情况下,这就足够了吗?)

所以我的想法是一个中央服务(最好是用C#编写的,但是Java也可以,如果它的框架提供更好的支持的话)可以被所有模块访问,这些模块必须同时访问,设置和读取权限。然后,该服务可以防止并发问题。当然,在它的后面,它仍然会使用一个数据库来存储权限

您对这种方法有何看法?服务不是一个瓶颈吗?但我觉得这是对的。我觉得不对的是从头开始做这件事,就像重新发明轮子一样。该服务是否可能类似于(ASP.NET)提供的身份验证和授权子框架?甚至是Active Directory?但它的重点似乎更粗粒度(文件、目录、打印机,而不是应用程序内部的函数…)。 你能告诉我你在这个话题上的经历吗?
非常感谢

以下是我在搜索过程中找到的一些指针:




如果您正在寻找现成的解决方案,我建议您利用设施。Active Directory不是唯一一个支持此协议的解决方案,您甚至可以使用开源解决方案。但是考虑到通用的解决方案,您可能会在性能上出现问题。我不记得我使用的支持LDAP的开源存储,但它看起来非常慢。因此,最好的方法可能是实现您自己的可扩展和高可用存储即服务。

您好,Viktor,谢谢您的回答。我们仍然采用当前的方法,将其直接存储在数据库中。对于我的模块,我将编写一个WCF服务来设置和获取权限。我将尝试使用System.Security.Principal实现这一点。