如何从我的PHP应用程序中获取用户的Windows用户名?

时间:2011-11-11 18:01:02

标签: php apache authentication active-directory ldap

我在这里发帖的原因是因为我仍然不清楚为了实现这一目标必须满足哪些具体要求。

我们在iSeries Apache Web服务器上运行我们的PHP应用程序。我们所有的用户都在IE上。我们在公司网络中使用AD作为用户名。

当前的apache服务器设置不需要任何用户登录我们的网页...如果您在我们的网络上,则可以访问该页面。

是否有办法(通过LDAP或其他方式)获取登录的Windows用户名?最后的最后手段是将用户重定向到我们的Windows服务器上托管的ASP.NET站点,并将用户名传递回PHP应用程序。但同样,这是最后的手段。

这里的链接:Can you get a Windows (AD) username in PHP?有很多好的建议,但AUTH_USER变量是空的,如链接中所提到的......我不认为iSeries Apache服务器可以实现Windows集成的身份验证。

如果有人可以解释我的选择,并且(如果可能的话)这些选项的难度......那将是非常感激的。请尽可能具体,因为我对LDAP或服务器配置没有经验。

2 个答案:

答案 0 :(得分:3)

您可以从ActiveX对象和JavaScript获取它,因为您使用的是IE。要将其添加到PHP中,可能将其作为登录页面中的隐藏字段包含在内?

try {
  var activex = new ActiveXObject('WScript.Network');
  document.write(activex.userName);
} catch (ex) {
  document.write("unable to get user info");
}

确保您已将此网站添加到浏览器的受信任区域,并enabled scripts才能运行该网站。

答案 1 :(得分:0)

根据我为PHP应用程序编写SSO处理的经验,你可以使用mod_auth_ntlm和Kerberos的组合来完成这项工作(查看this link,它非常接近我记得的,虽然我的原始设置是〜5年以前在Gentoo盒子上)。如果我没记错,您应该在此设置的$_SERVER["REMOTE_USER"]变量中找到用户名。