我有一个内部的PHP应用程序(只为使用域网络的员工)运行在IIS上的匿名身份验证.

用户登录应用程序的方式是通过登录表单(用户名和密码).

这就是为什么我禁用了Windows身份验证,只启用了匿名身份验证.

但是现在有一个能够保存失败的登录try 和失败的用户的请求.为此,我希望获得正在try 连接的实际Windows用户.

在我的一个其他应用程序中,我正在使用Windows身份验证,这样我就可以让Windows用户使用PHP$_SERVER['AUTH_USER'];

因此,我想在此应用程序上添加该功能,并启用了Windows身份验证.但是,当同时启用Windows身份验证和匿名身份验证时,$_SERVER['AUTH_USER'];将返回空字符串.

然后,我禁用了匿名身份验证,瞧!它向我显示了Windows用户.而且,登录表单仍然有效,即用户仍然需要输入用户名和密码.

所以我搞糊涂了--Windows身份验证是如何工作的?它到底验证了什么?因为没有密码之类的东西,所以它只给了我Windows用户名.

我现在基本上有"两层"身份验证了吗?通过Windows身份验证的"服务器"级身份验证,以及"app"级身份验证(登录表单)?(但话又说回来,Windows身份验证到底做了什么?)

那么,我可以安全地禁用匿名身份验证吗?

推荐答案

它到底验证了什么.

它确保请求来自登录的Windows用户,该用户在与IIS服务器相同的域上有效,并且不是匿名的,或者不是以某种方式来自域之外的.它对照Active Directory记录判断他们的凭据.你可以很容易地在网上读到更多关于它的信息,包括对它所遵循的过程的深入解释.它有时也被称为"Kerberos身份验证".

我可以安全地禁用匿名身份验证吗?

假设您不需要/不希望任何不是有效域用户的人访问您的应用程序,那么可以.

我现在基本上有两层身份验证了吗?

是.您可能想要考虑基于表单的身份验证过程是否真的是必要的,如果您可以根据用户的AD帐户自动识别用户,而无需他们在您的应用程序中键入任何内容,或者记住任何额外的用户名和密码等.本质上它是SSO(单点登录)的一种形式,尽管它只在Windows域中有效.

以下是一些帮助您入门的有用参考资料:

Php相关问答推荐

为什么这个方法调用用引号和花括号包裹?

Postgrid Webhook不叫laravel

如果再次调用SESSION_START(),会话.gc-max是否会重新启动?或者它是从第一次创建会话开始计算的?

在不超过PHP时间限制的情况下,在Laravel中高效地插入批量数据(25万条记录)?(队列、多租户)

Symfony装置加载:try 从命名空间加载类";ClassUtils";Doctrine\Common\Util";

将一个按钮添加到WooCommerce产品的管理视图中,该按钮链接到一个自定义的WebHook,并在末尾附加产品ID

CKEDITOR-如何在PHP中判断提交后的空数据

WooCommerce在收据页面获取产品下载URL

Mac 上安装 php 时出现 Homebrew 错误

如何在 PHP 中以 hh:mm:ss 格式获取两个 strtotime datetime/s 之间的时间差

根据小计向 WooCommerce Checkout 添加佣金

htaccess 重定向子域错误的 url

获取 Shopware 6 集合元素的值,PHP

无法读取某些 WordPress 主机上的 cookie

PHP preg_replace括号和方括号内的所有逗号

我怎样才能在 .htaccess 中有 2 个参数?

使用 Eloquent 更新现有的外键值

Symfony 6 中的入口点 (public/index.php) - 它是如何工作的?

使用 GROUP_CONCAT 规范化/转置来自查询的数据

Laravel - 关联与设置观察者事件的 ID