我们有一个使用resource/action based authorization
的遗留系统。最近,我们公司决定使用LDAP
服务器作为Authentication
和Authorization
的存储库。
之前我还没有和LDAP
服务器合作过,但据我所知,我们可以为不同的对象定义我们的模式。所以我在网上搜索了一个简单的{{{ 1}}使用resource/action based authorization
并且我找不到任何东西(每个人都在谈论用户,群组和角色)
所以我想到了两个问题:
LDAP
用于LDAP
是否是一个好主意
(因为我找不到如何做到这一点的好例子) PS:我们的应用程序是用C#编写的。我们可以使用哪些优秀的开源resource-action based authorization
客户端,或者我们应该使用.Net LDAP
?
答案 0 :(得分:2)
LDAP非常灵活,你可以定义你想要的任何模式,但它不是一个明显的任务。
我会说它非常适合您的情况,但我知道没有默认架构。谷歌搜索了一下,我发现this RFC可能会给你一个起点。那会匹配你所需要的吗?
关于.Net库:它是纯粹的" LDAP服务器或Active Directory服务器?
似乎DirectoryServer
支持两者,所以我会坚持下去。请注意,对于纯LDAP服务器,您必须使用System.DirectoryServices.Protocols.LdapConnection
进行连接。
SO entries like this one也可能会有所帮助。
希望这有帮助。
答案 1 :(得分:2)
您可以退后一步,查看更大的访问控制/授权用例。如果要进行基于资源操作的授权,可以推出基于属性的访问控制模型ABAC。
ABAC是RBAC和以身份为中心的授权的演变。它由NIST设计,与标准化RBAC的组织相同。
使用ABAC,您的LDAP服务器将成为属性的来源。属性只是一个键值对。在您的情况下使用ABAC的好处是您不需要扩展或更改LDAP模式。
使用ABAC,您将获得以下好处:
您可以在ABAC中表达以下方案:
XACML,可扩展访问控制标记语言实现了ABAC。您可以在此处阅读有关XACML和ABAC的更多信息:
您需要在要保护的应用程序前部署拦截器(策略执行点)。