2011-05-11 147 views
2

我正在使用LDAP-Active Directory为我的项目验证用户身份。过滤LDAP用户的最佳方法

我目前有2个登录页面--1个用于学生,另一个用于工作人员。

我已经设法编写一个认证脚本来绑定到LDAP服务器 - 这适用于存储在LDAP服务器上的所有用户。

现在我希望能够过滤出员工的学生,只允许员工通过“员工登录页面”登录。

的DN看起来像下面这样:

cn=USERNAME,ou=DEPT,ou=MAS,ou=LAN,o=UNI <-- STAFF 
cn=USERNAME,ou=DEPT,ou=STUDENT,ou=LAN,o=UNI <-- STUDENT 

我怎么能去筛选出OU =学生或东西,从能够通过新的工作人员验证脚本登录停止学生呢?

三江源

回答

2

为了防止学生从能够通过新的工作人员验证脚本登录,你可以改变你的基地LDAP搜索。尽管在整个目录中都搜索UPN,但您可以从ou=MAS,ou=LAN,o=UNI中搜索UPN。

随着LDIFDE.EXE它会给:

LDIFDE -fc:\ TEMP \ user.ldf -d “OU = MAS,OU = LAN,O = UNI” -R “(的UserPrincipalName =登录)”

因此,如果用户是学生,搜索不会返回任何内容。

在绝对LDAP上,它存在一个名为ExtensibleMatch的过滤器语法,它允许您这样做,但它在AD中工作。

+0

请原谅我,我不是很熟悉LDIFDE.exe,事实上我从来没有用过它。你说的是,如果改变我搜索的基础,那么不是搜索“ou = LAN,o = UNI”,而是搜索“ou = MAS,ou = LAN,o = UNI”? – 2011-05-11 20:48:17

+0

目前,你如何获得认证的人的DN?我假设他在一个表单中给他的登录名(userPrincipalName),并在目录中进行搜索以找到该对象。您可以根据登录页面从不同的地方开始搜索。 – JPBlanc 2011-05-12 03:27:37

+0

目前,我正在使用提供的用户名执行与LDAP服务器的自治绑定,然后返回如上所示的可分辨名称。我然后试图再次绑定返回的DN和密码。 正如我说的,即时通讯使用此作为起点: $ dn =“ou = LAN,o = UNI”;我可以为我的目录搜索做ou = MAS,ou = LAN,o = UNI吗? – 2011-05-12 14:58:14