【发布时间】:2019-07-26 15:20:16
【问题描述】:
我有两个 Windows 帐户,一个是普通用户级帐户,一个是管理员帐户。据我所知,除了我的名字之外,AD中两者之间没有任何联系。我通常使用用户帐户登录我的开发机器。
如果我使用 VS/IIS Express 在本地运行我的网站,我会得到以下值(如预期的那样):
System.Web.HttpContext.Current.User.Identity.Name = "DOMAIN\\jespaillat"
WindowsIdentity.GetCurrent().Name = "DOMAIN\\jespaillat"
然而,在部署的站点上,当同时使用 Chrome 和 IE11 时,我得到以下信息:
System.Web.HttpContext.Current.User.Identity.Name = "DOMAIN\\admin-jespaillat"
WindowsIdentity.GetCurrent().Name = "IIS APPPOOL\\DefaultAppPool"
两个浏览器都会自动将我的 Windows 凭据发送到服务器,并且不会提示登录。隐身运行时我得到相同的行为。我可以在 Fiddler 中看到浏览器正在发送带有请求的 Kerberos 票证,尽管帐户名称在 base64 字符串中不可见。
那么它从哪里获得管理员帐户的名称,我没有登录?这两个帐户是如何联系起来的?
(有趣的是,Firefox 每次都会提示输入凭据,所以我可以输入正确的值。)
Windows Server 2016、IIS 10、.NET 4.7.2。桌面是 Windows 7
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
</system.web>
在 IIS 中仅启用 Windows 身份验证
【问题讨论】:
-
您确定 Chrome 没有作为您的管理员帐户运行(即使您没有使用它登录 Windows)?
-
@GabrielLuci Chrome 未以管理员身份运行;该选项未在快捷方式上选中。此外,当我启动它时,我没有收到 UAC 升级提示。 FWIW,Chrome Sync(右上角的图标)已连接到我的个人 gmail。另外,我根本不使用 IE,我只是启动它来检查这个错误
-
不一定需要以“管理员身份”运行才能在您的管理员帐户凭据下运行。使用任务管理器检查运行它的凭据,例如this。 (此外,无论使用哪个 Windows 帐户,Google Sync 仍然可以连接到您的个人帐户)
-
@GabrielLuci 不。以管理员身份在我的桌面上运行的唯一进程是 TaskManager。在服务器上,有几个进程以我的管理员帐户运行,但都与远程桌面登录有关; w3wp 不是其中之一(它在应用程序池帐户下运行)在重新启动服务器时,如果没有远程处理,我仍然得到错误的帐户。 (和你一样,我认为这更有可能是客户端/浏览器的问题,但我只是想把它放在那里以保持完整性)
-
它是从某个地方得到的。您的帐户未“关联”。在代码中的任意位置查找用户名,或在 Chrome 中查找保存的密码。
标签: asp.net iis active-directory windows-identity