如何在PHP中实现基于LDAP组的授权?

时间:2014-09-09 09:50:40

标签: php ldap

我正在用PHP开发一个简单的站点,以使一些用户能够完成一些特定的任务。我的目标是为用户实现基于角色的授权,他们应该根据LDAP组成员身份查看不同的页面。这就是我试图实现它的方式 -

1) use php-ldap library functions to connect to the LDAP server
2) extract the dn of the group name and username by ldapsearch from the user base dn and group base dn
3) search for the "memberOf" attributes in the user entry and match them with the group dn. Return true if matched
4) Search for the "member" attributes in the group entry and match them with the user dn. Return true if matched.

到目前为止,我已经针对openldap服务器对此进行了测试,它似乎正在运行,但是我希望该脚本可以对付其他目录服务器,如apached,active directory和389ds。由于我无法访问多个目录服务器,因此我想知道这些步骤是否可以在其他目录服务器上运行。任何有关这方面的帮助将不胜感激。提前致谢。

1 个答案:

答案 0 :(得分:0)

这些步骤基本上适用于其他LDAP服务器。您必须能够更改正在使用的属性,因为ActiveDirectory例如使用属性samAccountName,其中默认LDAP方案使用uid

ActiveDirectory确实将组成员身份存储在用户节点中,而不是存储在组节点中。因此,必须有不同的方法来检索组成员资格。

查看https://github.com/heiglandreas/kimai/blob/feature/fixLDAPAuthentication/core/libraries/Kimai/Auth/Ldapadvanced.php,其中可能包含一些有用的摘要。它没有考虑在usernode中定义组成员资格的问题!