LDAP:在应用程序中使用属性

时间:2017-09-14 15:12:50

标签: active-directory ldap acl openldap

这是关于在应用程序中使用目录服务(DS)的理论问题。我不在乎它是ActiveDirectory,OpenLDAP,......但我建议使用LDAP协议。 我不熟悉DS的主题,所以请原谅我的简单问题。

大多数时候,我认为应用程序仅使用身份验证机制。将用户放入应用程序登录对话框的凭据传递给ldap-bind,看看它是否有效。

但我想了解如何在DS中设计和实现应用程序内部访问权限 - 而不仅仅是登录身份验证。所以例如检查是否允许用户点击按钮。

它只是查询创建的LDAP对象并检查其属性值(在应用程序中只读取它的含义)与指示传递或拒绝的预期值? 这很简单,我不确定那些奇迹......

是吗?

P.S。:我不是在谈论DS的企业功能(复制,执行......)。

谢谢!

2 个答案:

答案 0 :(得分:1)

  

大多数时候,我认为应用程序仅使用身份验证机制。将用户放入应用程序登录对话框的凭据传递给ldap-bind,看看它是否有效。

他们肯定会这样做,但还有更多。

  

但我想了解如何在DS中设计和实现应用程序内部访问权限 - 不仅仅是对登录的身份验证。所以例如检查是否允许用户点击按钮。

在身份验证之后,应用程序将检索用户的属性,或者出现自己的DN的DN,例如角色。

  

它只是查询创建的LDAP对象并检查其属性值(在应用程序中只读取它的含义)与指示传递或拒绝的预期值?这很简单,我不确定那些奇迹......

如何完成此操作取决于LDAP服务器中角色的准确程度。你已经描述过一种方式:还有其他方式。

答案 1 :(得分:1)

EJP总结了一切。

但我想提升的一点是:

  

它只是查询创建的LDAP对象并检查其属性值...

正如EJP所说,你可以这样做。在我看来,DS是对LDAP实现服务器可以执行的限制。 DS是imho,一个面向层次的面向对象的数据库。因此,您可以存储角色,用户和规则/关系。

但是还有更多,而且就你提到的那一点而言,我特别欣赏的是ACL机制。

我知道OpenLDAP的实现,所以我会把它作为一个例子,但我确信其他人有相同的机制。

ACL允许您在DS内部描述用户可以使用不同权限访问的内容:

  • 执行
  • ...

因此,您可以轻松地想象DS中描述您的应用程序的分支,并配置ACL以允许某些用户组对与该应用程序对应的条目具有不同的访问权限。

在实际使用中,您将能够搜索应用程序分支及其所有子代,并且DS将仅返回您能够阅读的条目的分支/条目/属性。

这是我曾经想象过的不同应用程序,但从未将它推到极限,因此需要更多地考虑优化它,但这是可行的。

我通常做的是,例如,您的DS包含商店的分支,并且根据您的用户的角色,并非商店的每个属性都是可读/可写的,因此我在ACL中实现此机制实际代码,我只是:

  • 检索商店:不返回用户无法阅读的属性
  • 将更改写入商店:如果用户无法写入某个属性,则DS会返回错误。

因此,所有访问权限逻辑都是"内置" DS,您只需管理CRUD API。