这是关于在应用程序中使用目录服务(DS)的理论问题。我不在乎它是ActiveDirectory,OpenLDAP,......但我建议使用LDAP协议。 我不熟悉DS的主题,所以请原谅我的简单问题。
大多数时候,我认为应用程序仅使用身份验证机制。将用户放入应用程序登录对话框的凭据传递给ldap-bind,看看它是否有效。
但我想了解如何在DS中设计和实现应用程序内部访问权限 - 而不仅仅是登录身份验证。所以例如检查是否允许用户点击按钮。
它只是查询创建的LDAP对象并检查其属性值(在应用程序中只读取它的含义)与指示传递或拒绝的预期值? 这很简单,我不确定那些奇迹......
是吗?P.S。:我不是在谈论DS的企业功能(复制,执行......)。
谢谢!
答案 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,您只需管理CRUD API。