背景:
我在IIS8上有一个基于PHP的网站,具有Active Directory集成,在这里我需要提供不同级别的访问控制。例如:
Customer Service
- View Transactions
- View Customers
Finance
- Edit Transactions
- View Transactions
- View Customers
当前,我们正在使用IIS的AD集成来控制对站点安全部分的登录,但是不能基于组划分权限(例如,上面的示例)。
问题:
有没有一种方法(通过PHP)将AD用于简单的登录之外,我可以确定一个人所在的AD组,从而以编程方式将其页面建立在他们的组上?
答案 0 :(得分:0)
这取决于。您的站点使用NTLM还是通过直接请求AD服务器来检查AD凭据? 在第一种情况下(NTLM),网站仅接收有关帐户(samaccountname,域)的一些数据,因此它对AD中的自定义字段一无所知,其中的自定义字段可能包含有关权限的数据,因此您需要控制网站的访问权限,也许您可以编写一些同步工具,该工具将从AD导出访问权限并将其放置到您站点的数据库中。 在第二种情况下,您的站点具有用户对AD的访问权限,并且可能(取决于您的AD设置)可以读取AD中某些访问特定的字段。 我的回答基于我在nginx / linux下在php网站上编写AD auth的经验,在基于IIS的php环境中情况可能有所不同。
答案 1 :(得分:0)
结果证明可以满足我对单一登录机制,没有单独的查找帐户,不同的组权限等的需求,这确实很简单,根本不需要LDAP。
就是这样。没有LDAP库,没有LDAP调用。 IIS将解决所有问题。
如果文件存在,则它们位于文件夹代表的AD组中。如果不是,那么他们不在组中。然后,以编程方式,如果我在“财务”上存在“存在”(例如,以我的问题为例),则允许他们“编辑交易”权限。
缺点:
这不是跨平台安全的(尽管方法可以很容易地适应其他平台)。