Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Apache、PHP和LDAP从计算机获取AD用户凭据_Php_Apache_Authentication_Active Directory_Ldap - Fatal编程技术网

如何使用Apache、PHP和LDAP从计算机获取AD用户凭据

如何使用Apache、PHP和LDAP从计算机获取AD用户凭据,php,apache,authentication,active-directory,ldap,Php,Apache,Authentication,Active Directory,Ldap,我们正在尝试实现一个单一登录解决方案,该解决方案集成了AD和PHP web应用程序。当用户尝试访问intranet网站时,应执行以下操作: web应用程序要求服务器读取已登录windows/AD的用户计算机中存储的广告凭据 AD“将AD用户名传递给Apache” 使用PHP,我读取存储在$\u服务器['PHP\u AUTH\u USER']中的凭证(据我所知) 这一切都意味着只能在内部网中工作。在它之外,我们只显示一个登录表单 我们对这个过程有些困惑。从中,我们使用以下指令配置Apache,

我们正在尝试实现一个单一登录解决方案,该解决方案集成了AD和PHP web应用程序。当用户尝试访问intranet网站时,应执行以下操作:

  • web应用程序要求服务器读取已登录windows/AD的用户计算机中存储的广告凭据
  • AD“将AD用户名传递给Apache”
  • 使用PHP,我读取存储在$\u服务器['PHP\u AUTH\u USER']中的凭证(据我所知)
这一切都意味着只能在内部网中工作。在它之外,我们只显示一个登录表单

我们对这个过程有些困惑。从中,我们使用以下指令配置Apache,但最终没有成功,错误日志中没有显示内部服务器错误消息

<Location "/">
    Options -Indexes MultiViews FollowSymLinks
    Order allow,deny
    Allow from all
    AuthType Basic
    AuthName "VALIDAUTHNAME"
    AuthBasicProvider ldap
    AuthzLDAPAuthoritative   Off
    AuthLDAPURL "ldap://IP.FOR.THE.SERVER:389/DC=MYCOMPANY,DC=CL?sAMAccountName?sub?(objectClass=*)"
    AuthLDAPBindDN "DC=MYCOMPANY,DC=MYCOUNTRY"
    Require ldap-attribute gidNumber=10000
</Location>

选项-索引多视图跟随符号链接
命令允许,拒绝
通融
AuthType Basic
AuthName“VALIDAUTHNAME”
AuthBasicProvider ldap
authzldapoff
AuthLDAPURL“ldap://IP.FOR.THE.SERVER:389/DC=MYCOMPANY,DC=CL?sAMAccountName?sub?(objectClass=*)”
AuthLDAPBindDN“DC=MYCOMPANY,DC=MYCOUNTRY”
需要ldap属性gidNumber=10000

对我们必须实施的流程是否有明确的解释?我们已经阅读了很多关于反向过程的内容,将凭证传递给AD,但关于这个案例的内容并不多。我们的系统管理员在这方面没有太多经验,所以他们没有太多帮助。

几个月前,我做了你想做的事情。它的配置不是很难,但是熟悉
winbind
会有所帮助。如果您没有,您的系统管理员应该能够提供帮助
winbind
samba
包的一部分,因此它可能已经安装在您的服务器上。设置winbind后,只需启用apache模块并进行一点配置。该模块的站点应该能够引导您完成它。当我最初设置它时,我用IE8、Chrome和旧版本的Firefox(可能是5或6)对它进行了测试,它们都支持NTLM身份验证。如果所有配置都正确并且工作正常,apache模块将自动使用用户名填充
$\u服务器['PHP\u AUTH\u USER']
,而不需要与用户进行任何交互,并且您可以从那里使用它做任何您想做的事情。现在有更多的文档可用,即使以前缺少文档,我也只有一个主要问题,现在已经有了很好的解决方案。

您是否尝试在用户未登录web应用程序的情况下执行此操作?当你说“登录用户的windows帐户”时,用户是登录到windows还是登录到web应用?是的,我试图避免显示web应用的登录表单,事实上,使用他的凭据登录用户,这就是我所说的单次登录。我正在尝试登录到我的应用程序一个用户已登录windows/AD,其计算机中存储了广告凭据。我试图在这个问题上说得更清楚些。