1

我们有一个使用resource/action based authorization. 最近我们公司决定使用LDAP服务器作为AuthenticationAuthorization.

我以前没有使用过LDAP服务器,但据我所知,我们可以为不同的对象定义我们的模式。所以我在网上搜索了一个resource/action based authorization使用实现的简单示例,LDAP但我没有找到任何东西(每个人都在谈论关于用户、组和角色)

所以我想到了两个问题:

  1. LDAP使用a是个好主意吗resource-action based authorization (因为我找不到如何做到这一点的好例子)
  2. 如果是,我们如何实施?(任何谷歌结果都会有所帮助:))

PS:我们的应用程序是用 C# 编写的。是否有任何好的开源LDAP客户端可供我们使用,或者我们应该使用 .NetDirectoryServices吗?

4

2 回答 2

2

LDAP 非常灵活,您可以定义任何您想要的模式,但这不是一项显而易见的任务。

我会说它非常适合您的情况,但我知道没有默认架构。谷歌搜索了一下,我发现这个 RFC可能会给你一个起点。那会符合你的需要吗?

关于 .Net 库:它是“纯”LDAP 服务器还是 Active Directory 服务器?
它似乎DirectoryServer支持两者,所以我会坚持下去。请注意,对于纯 LDAP 服务器,您必须使用System.DirectoryServices.Protocols.LdapConnection.

像这样的条目可能也会有所帮助。

希望这可以帮助。

于 2015-03-01T08:40:26.840 回答
2

您可以退后一步,看看更大的访问控制/授权用例。如果你想做基于资源操作的授权,你可以推出 ABAC,基于属性的访问控制模型。

ABAC 是 RBAC 和以身份为中心的授权的演变。它是由标准化 RBAC 的同一组织 NIST 设计的。

使用 ABAC,您的 LDAP 服务器成为属性的来源。属性只是一个键值对。如果在您的情况下使用 ABAC 的好处是您不需要扩展或更改您的 LDAP 模式。

使用 ABAC,您可以获得以下好处:

  • 您将授权逻辑外部化到中央策略决策点
  • 您将授权逻辑表示为策略而不是角色
  • 策略可以使用用户、资源、操作和上下文的任何属性

您可以在 ABAC 中表达以下场景:

  • 如果 document.location==user.location,则具有角色==manager 的用户可以对文档执行操作==编辑

XACML,可扩展访问控制标记语言实现 ABAC。您可以在此处阅读有关 XACML 和 ABAC 的更多信息:

您需要在要保护的应用程序前面部署一个拦截器(策略执行点)。

于 2015-03-06T10:44:20.377 回答