在使用IE/Firefox时,使用PHP、active directory对ldap进行身份验证

在使用IE/Firefox时,使用PHP、active directory对ldap进行身份验证,php,apache,active-directory,ldap,intranet,Php,Apache,Active Directory,Ldap,Intranet,下面的代码根据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检查用户的凭据

<?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!";}
}
?>

我的用户使用Firefox和IE,我知道这可以无缝地传递他们的ActiveDirectory凭据

我只想检查广告组,看看是否在其中找到该用户名,如果是,则显示页面,否则提示输入凭据


由于我们的用户已经登录到域控制器,我想获取他们的用户名,检查是否在特定组中找到,然后让他们进入,否则提示用户输入凭据。这是怎么可能的呢?

刚刚在一个类似的设置上工作:我跳过了所有LDAP内容,让web服务器在让客户机进入之前用AD对其进行身份验证(对不起,我不记得在M$alternate universe中这叫什么)


如果客户端到达PHP脚本,他在AD中,我在
$\u服务器[“AUTH\u USER”]
$\u服务器[“LOGON\u USER”]
中都有他的用户名,否则,他将永远无法访问脚本。

鉴于您使用IIS作为web服务器,您实际上不需要通过PP代码与Active Directory服务器通信来实现所需的功能

这里的关键词是-这是措辞djn。如果启用此选项(并且拒绝匿名访问),IIS将根据请求资源的Active Directory和NTFS文件系统权限检查提供的凭据。因此,您可以使用简单的NTFS访问控制机制来控制对文件的访问

如果您的用户使用IE,他们甚至不必键入凭据,因为这是通过所谓的(简单且受保护的GSSAPI协商机制)及其底层机制自动完成的,或者取决于您的客户端和服务器能够处理什么

据我所知,Firefox也能够自动将Windows登录凭据移交给您的服务器。你只需要调整a来打开该功能——不知道这些信息在Firefox 3.5.x中是否仍然有效

如果您在*nix系统上运行Apache,您将不得不求助于一些服务器端模块来处理类似于Windows身份验证的集成系统。可能的选项有(不知道它们是否仍然保持或稳定):

对于Windows上的Apache,有:

  • (过时;与上面的
    mod\ntlm
    不同)
  • (模组的继任者)

请注意,这些模块中的大多数似乎都非常陈旧

有什么问题吗?太好了。谢谢