打开LDAP身份validation – 如何validationuserpassword而不绑定?

我在做什么…

试图为我们组织的所有机器,博客,wiki,CRM,HRM,项目pipe理工具,SVN等等实施单点login

我们在运行CentOS的专用服务器上安装并configuration了OpenLDAP。 我使用phpLdapAdmin来添加组织结构和有关各种用户,客户端,资源的信息。

一个用户的示例条目…

DN是:: cn = Bill Gates,ou =用户,dc = example,dc = com

userid :: bill.gates

mail :: [email protected]

userpassword :: as2%$%66789ds(一些md5神秘值)

我现在在哪里

OpenLDdap工作正常。 绑定testing也成功运行。

我想做的事…

绑定使用更高权限的用户,然后通过他们input的用户标识或邮件search用户,这些用户标识或邮件与CN稍有不同。 点是我想validation用户对不属于RDN的属性。

我卡在哪里…

  1. 我不能绑定使用userid作为它的不分开的DN。 这是否允许一般?
  2. 我可以绑定使用不同的LDAP用户说,高特权用户和做ldap_search获取基于filteruserId唯一的logging,但是然后用户input密码的MD5与userPassword字段不匹配。 OpenDLdap使用一些salt进行encryption。 我也不想去除盐。 有什么出路吗?

我的问题(最后)

  1. 我们可以对不属于RDN的属性进行ldap_bind吗?
  2. 我们可以向OpenLDAP服务器发送未encryption的密码(我将使用HTTPS隧道进行安全性) ,并要求OpenLDAPencryption并检查用户密码字段吗? 这通常是我们在所有的networking应用程序,对不对?
  3. (无题)可以用userid包含。 (点)和空格。 我们需要在“First Name(givenName)”和“Last Name(sn)”之间加上一些字符。 哪一个是安全angular色? 我的意思是世界上所有(或大部分)应用程序在用户名中允许使用哪种非aplha-数字字符?

我最关心的是要采取一种方法,可以很容易地使用大多数应用程序。 有许多基于networking的应用程序,桌面软件等,我们将在我们的任务单点login期间修改!

感谢阅读…并提前感谢一些帮助!

-Rahul

关于第一个问题:

我已经与另一个LDAP系统合作,允许针对各种用户属性进行“login”。 解决scheme是做两个连接。 第一个连接(可能是匿名绑定的)使用用户提供的信息查询LDAP,以find其用户对象的RDN。 第二个连接尝试使用发现的RDN和提供的密码绑定密码。 这是一个两步的过程,它的工作原理。

虽然,如果这个应用程序将获得很多login提供的属性,而不是RDN本身,这将是一个真正的好主意,索引这些属性。 这是一个表演的事情。

二:

据我所知,OpenLDAP支持LDAP-SSL(TCP / 636),这可能比HTTPS隧道更好。 默认情况下,LDAP绑定是明确的,但有LDAP扩展允许其他方法。 活动目录允许NTLM的LDAP绑定的例子,我敢肯定,LDAP已经kerberized以及在某些时候。 我不知道openLDAP支持什么方法。

三:

我有属性中具有“[email protected]”格式电子邮件的LDAP源。 哪里有更多的命名属性,这就是我的openLDAP体验平坦的地方。 我不知道这是什么支持。 我知道Active Directory允许命名属性中包含空格,而Novell eDirectory同时允许空格和句点(尽pipe不build议这样做)。 通常,命名属性是userID,像givenName,surname和emailAddress这样的属性包含特殊字符。 因为它们不是命名属性,所以它们没有相同的限制。

恐怕我不知道OpenLDAP是否足够帮助它,但是我想知道它是否具有类似于您可以使用的OpenDS 身份映射function的function 。

这个想法是,客户端可以使用自定义标识来标识自己,然后映射使用正则expression式将其与用户条目上的任何其他属性进行匹配。 在OpenDS中,这似乎使用SASL选项,所以使用他们的工具,我可以提供如下选项:

bin/ldapsearch --saslOption authid=u:dominic --saslOption mech=PLAIN [..] 

身份映射器然后使用身份validationID,在这种情况下匹配我的用户条目上的uid属性。

希望有所帮助!