如果这个问题偏离了主题,我深感抱歉;我正在尝试解决一些超出我专业领域的问题。
我最近将一个面向内部的 Web 应用程序迁移到 IIS。我还启用了以前没有使用的 Windows 身份验证 (IWA)。我发现的问题是,我的用户帐户(显然只有我的用户帐户)有时(并非总是)被身份验证过程错误识别。
以下是我的网站的 IIS 身份验证设置的详细信息:
- 我已启用 Windows 身份验证并禁用其他所有内容(包括匿名身份验证)。
- Windows 身份验证使用内核模式身份验证和
Negotiate
提供程序。
关于我提到的错误识别:
- 我在同一个 AD 域中有两个用户帐户。分别称为
acct1
和acct2
。我通常以 身份登录,在需要提升权限时acct1
切换到。acct2
- 我登录到运行 IIS 的 VM
acct2
来设置站点。 - 当我返回本地电脑访问该网站时,该网站将我识别为
acct2
,尽管我以 的身份登录到我的电脑acct1
。 - 访问过该网站的其他人都已被正确识别,甚至包括像我一样拥有多个帐户的人。
- 如果我以 身份登录并从另一台 PC 访问该网站
acct1
,则该网站会正确识别我为acct1
。 - 反常的是,如果我从服务器机器本身访问该网站,我以 的身份登录
acct2
,它会将我识别为acct1
。 - 不管怎样,
acct2
我在本地电脑上具有管理员权限,但在访问该网站的其他电脑上却没有。 - 这种情况已经持续了一周多,即使重启本地电脑后问题仍然存在。不同的浏览器也会出现这种情况。
如果我将 IWA 提供程序从 切换Negotiate
到NTLM
,那么我会看到以下内容:
acct1
当我从本地电脑访问该网站时,我就能正确识别。- 当我从 Web 服务器计算机访问网站时,系统提示我输入凭据。但是,它不接受
acct1
或 的凭据acct2
。
我不太关心从服务器访问网站,但我从 PC 访问网站时需要正确识别身份。我想使用Negotiate
而不是NTLM
。
我是一名开发人员,而不是系统管理员,但我正在尝试寻找任何线索,以帮助我缩小问题范围,并可能为我们的基础设施团队指明正确的方向。这听起来像是 Active Directory 配置或 Kerberos 问题吗?
该网站是一个 Python Flask 应用程序,通过 Python 库在 IIS 中作为 FastCGI 应用程序运行wfastcgi
。该网站读取请求变量的值REMOTE_USER
以获取 IWA 身份验证过程的结果。