AUTH_USER vs LOGON_USER vs REMOTE_USER

时间:2017-06-22 10:53:45

标签: php windows single-sign-on

我希望能够在他们访问我们的网站时获取登录用户的信息,这样他们就不需要登录了。 我已经被告知,当你在Windows IE上时它只能在I.E中出现。一旦他们用他们的Windows凭证登录。

我已经在网上搜索了所有这三个($_SERVER['AUTH_USER']$_SERVER['LOGON_USER']$_SERVER['REMOTE_USER']),因此我不确定要检查哪一个。

其次,我使用带有IIS的Windows服务器,无论我在网上尝试和搜索过什么,但没有任何作用。 我可以看到$_SERVER中的变量,但以上所有都是空字符串。

如何解决此问题?

供参考我使用带有php v7.1的Windows Server 2012

同样在我的php.ini文件中,我看到它们都具有以下值。

$_SERVER['LOGON_USER']: no value(就像这样)

但是我还搜索了如何在.ini文件中设置这些内容而没有太多运气。

header('WWW-Authenticate: NTLM', true);


// with this die there is a user and password prompt 
// if i click cancel then it sends the information through to the 
// server vars as expected.     
// when we cancel here it registers as two requests as my logs in the 
// log shows up two times.

// without it the login page loads with symfony but no values ever
// come through and i cant log in the user. 
die();

1 个答案:

答案 0 :(得分:1)

为了做到这一点,系统应该在内联网上!

您可以使用以下代码轻松获取系统用户名:

<?php echo getenv("username"); ?>

为了首先获取登录用户,请确保已启用Windows身份验证并禁用匿名。您必须先发送NTLM-Authenticate标头。之后,$ _SERVER-Vars

中应该有合适的用户
header('WWW-Authenticate: NTLM');
$_SERVER['AUTH_USER'];

这仅适用于I.E,您还需要配置I.E进行自动登录

配置Internet Explorer以进行自动登录

  • 通过选择“Internet选项”打开“Internet选项”对话框 从控制面板或Internet中的“工具”菜单 资源管理器。

  • 在“Internet选项”对话框的“安全”选项卡上,选择“本地” 单击Intranet,然后单击自定义级别。

  • 在“安全设置”对话框的“登录”下,选择“自动” 仅在Intranet区域中登录,然后单击“确定”。

  • 在“安全设置”选项卡上的“Internet选项”对话框中 仍然选择了本地Intranet,单击“站点”。

  • 在“本地Intranet”对话框中,单击“高级”。

  • 在下一个对话框(也称为“本地Intranet”)中,键入URL 您的Communicator Web Access站点(例如, 将此网站添加到区域中https://cwaserver.contoso.com) 框,然后单击添加。

  • 在“本地Intranet”对话框中,单击“确定”。

  • 在原始的“本地Intranet”对话框中,单击“确定”。

  • 在“Internet选项”对话框中,单击“确定”。