我如何从我的PHP应用程序获得一个用户's Windows用户名


How can I get a user's Windows username from my PHP app?

我在这里发帖的原因是,我还不清楚必须满足哪些具体要求才能实现这一点。

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

当前的apache服务器设置不需要任何用户登录到我们的页面…如果你在我们的网络上,你可以访问这个页面。

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

这里的链接:你可以得到一个Windows (AD)的用户名在PHP?有相当多的好建议,但是AUTH_USER变量是空的,如链接中提到的…我不认为iSeries Apache服务器可以实现Windows集成授权。

如果有人能解释一下我的选择,以及(如果可能的话)这些选择的难度……我将不胜感激。请尽可能具体,因为我没有LDAP或服务器配置的经验。

你可以从ActiveX对象和JavaScript中获得它,因为你正在使用IE。将其作为隐藏字段包含在登录页面中?

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

确保您已将此站点添加到浏览器的受信任区域,并启用了运行该站点的脚本。

根据我为PHP应用程序编写SSO处理的经验,您可以使用mod_auth_ntlm和Kerberos的组合来完成此工作(请查看此链接,它与我记忆中的非常接近,尽管我最初的设置是在大约5年前的Gentoo机器上)。如果我没记错的话,您应该在这个设置中的$_SERVER["REMOTE_USER"]变量中找到用户名。