【问题标题】:Best way to filter out LDAP users过滤掉 LDAP 用户的最佳方法
【发布时间】:2011-05-12 02:40:59
【问题描述】:

我正在使用 LDAP - Active Directory 来验证我的项目的用户。

我目前有 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=STUDENT 或其他内容以阻止学生通过新的教职员工身份验证脚本登录?

谢谢

【问题讨论】:

    标签: php active-directory ldap


    【解决方案1】:

    为防止学生通过新的员工身份验证脚本登录,您只需更改 LDAP 搜索的基础。尽管在整个目录中搜索 UPN,但您还是从 ou=MAS,ou=LAN,o=UNI 搜索 UPN。

    使用 LDIFDE.EXE 会给出:

    ldifde -f c:\temp\user.ldf -d "ou=MAS,ou=LAN,o=UNI" -r "(userPrincipalName=login)"

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

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

    【讨论】:

    • 请原谅,我对 LDIFDE.exe 不是很熟悉,事实上我从未使用过它。你的意思是,如果改变我搜索的基础,而不是搜索 "ou=LAN,o=UNI" ,我可以搜索 "ou=MAS,ou=LAN,o=UNI" ?
    • 目前,如何获取认证人的DN?我假设他在一个表单中给出了他的登录名(userPrincipalName),并且您在目录中进行搜索以找到该对象。您可以根据登录页面从不同的位置开始此搜索。
    • 目前,我正在使用提供的用户名对 LDAP 服务器执行匿名绑定,然后返回可分辨名称,如上所示。然后我尝试使用返回的 DN 和密码再次绑定。正如我所说,我以此为起点: $dn="ou=LAN,o=UNI" ;我可以为我的目录搜索做 ou=MAS,ou=LAN,o=UNI 吗?
    • 我不明白的东西。如果绑定是匿名的,则它与用户无关!所以你执行一个匿名绑定,然后你搜索用户是 UPN 吗?也许您可以显示您的代码,但是是的,我认为您可以使用 ou=MAS,ou=LAN,o=UNI 进行目录搜索?
    猜你喜欢
    • 1970-01-01
    • 2019-05-13
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    相关资源
    最近更新 更多