2017-09-14 40 views
0

这是关于在应用程序中使用目录服务(DS)的理论问题。我不在乎它是否是ActiveDirectory,OpenLDAP,但我建议使用LDAP协议。 我对DS的主题很陌生,请原谅我简单的问题。LDAP:在应用程序中使用属性

大部分时间我认为应用程序只使用身份验证机制。将用户在应用程序登录对话框中放入的凭证传递给ldap-bind并查看它是否有效。

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

它仅仅是查询一个已创建的LDAP对象,并检查它的属性值(仅在应用程序中读取它的意义)与指示通过还是拒绝的期望值? 这很简单,我不知道这就是所有的奇迹...

是吗?

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

谢谢!

回答

1

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

他们当然这样做,但还有更多。

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

认证之后,应用程序将检索用户的属性或其自己的DN出现的DN,例如角色。

它仅仅是查询创建的LDAP对象,并检查它的属性值(仅在应用程序中读取它的意义)与指示通过还是拒绝的期望值?这很简单,我不知道这就是所有的奇迹......

这是如何完成取决于如何确切地在您的LDAP服务器中表示角色。你描述过一种方式:还有其他的。

1

EJP总结了一切。

但有一点我想提高是:

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

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

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

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

的ACL允许您将DS里面描述了用户可以访问不同的权限:

  • 阅读
  • 执行
  • ...

因此,您可以轻松想象DS中描述应用程序的分支,并配置ACL以允许特定用户组拥有对与应用程序相对应的条目的不同访问。

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

这是我为某些不同的应用想到的东西,但从来没有将它推到极限,因此需要更多地考虑优化它,但这是可行的。

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

  • 获取存储:用户无法读取该属性并不会返回
  • 更改写入店:如果用户不能写一个特定的属性,则DS会返回一个错误。

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

+0

最后一部分对我的问题非常有用。它比阅读和口译更优雅。如您所说,权利逻辑保留在DS中。 – chris01

相关问题