Bra*_*rad 6 php apache intranet ldap active-directory
下面的代码检查用户对ldap的凭据
<?php
$ldaphost = "ldap.domain.com";
$ldapport = 389;
$ds = ldap_connect($ldaphost, $ldapport)
or die("Could not connect to $ldaphost");
if ($ds)
{
$username = "johndoe@domain.com";
$upasswd = "pass";
$ldapbind = ldap_bind($ds, $username, $upasswd);
if ($ldapbind)
{print "Congratulations! $username is authenticated.";}
else
{print "Access Denied!";}
}
?>
Run Code Online (Sandbox Code Playgroud)
我的用户使用Firefox和IE,我知道可以无缝传递他们的ActiveDirectory证书.
我只想检查AD组以查看是否在那里找到该用户名,如果是,则显示该页面,否则提示输入凭据.
由于我们的用户已经登录到域控制器,我想获取他们的用户名,检查是否在特定组中找到它,然后让他们进入,否则提示用户输入凭据.这怎么可能?
实际上,您不需要使用PP代码与Active Directory服务器通信,以实现您希望使用IIS作为Web服务器的事实.
这里的关键词是集成Windows身份验证 - 这是djn 寻找的措辞.如果启用此选项(并拒绝匿名访问),IIS将根据Active Directory检查提供的凭据以及所请求资源的NTFS文件系统特权.因此,您可以使用简单的NTFS访问控制机制来控制对文件的访问.
如果您的用户使用IE,他们甚至不必输入他们的凭据,因为这是通过所谓的SPNEGO(简单和受保护的GSSAPI协商机制)及其底层机制Kerberos或NTLMSSP自动完成的,具体取决于您的客户端和服务器的能力处理.
据我所知,Firefox也能够自动将Windows登录凭据交给您的服务器.您必须调整配置选项才能启用该功能 - 不知道此信息在Firefox 3.5.x中是否仍然有效.
如果您在*nix系统上运行Apache,则必须使用某些服务器端模块来处理类似于集成Windows身份验证的系统.可能的选项是(不知道它们实际上是否仍然保持或稳定):
对于Windows上的Apache,有:
mod_ntlm(过时;与mod_ntlm上述不同)mod_auth_sspi(继任者mod_ntlm)请注意,大多数这些模块似乎都很老.
| 归档时间: |
|
| 查看次数: |
9480 次 |
| 最近记录: |