首页 文章

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

提问于
浏览
1

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

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

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

您如何看待这种方法,服务不会成为瓶颈吗?但它对我来说'感觉'是正确的 . 对我来说不合适的是从头开始做这件事,就像重新发明轮子一样 . 该服务是否可以像(ASP).NET提供的身份验证和授权子框架?甚至是Active Directory?但它的重点似乎更粗糙(文件,目录,打印机,而不是应用程序内的功能......) . 你能告诉我你对这个话题的经历吗?
提前谢谢了!

以下是我在搜索过程中发现的一些指示:
http://en.wikipedia.org/wiki/Role-based_access_control
Storage of Role-based Permissions using ADFS and WIF
Designing a permissions based security model
Best Role-Based Access Control (RBAC) database model

1 回答

  • 1

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

相关问题