1

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

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

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

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

以下是我在搜索过程中发现的一些提示:
http://en.wikipedia.org/wiki/Role-based_access_control
使用 ADFS 和 WIF 存储基于角色的权限
设计基于权限的安全模型
最佳基于角色的访问控制 (RBAC)数据库模型

4

1 回答 1

2

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

于 2012-08-15T10:36:59.410 回答