HttpContext.Current.User returns 管理员帐户而不是用户帐户
HttpContext.Current.User returns admin account instead of user account
我有两个 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 服务器 2016,IIS 10,.NET 4.7.2。桌面是 Windows 7
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
</system.web>
在 IIS 中只启用了 Windows 身份验证
Credential Manager 是罪魁祸首。
事实证明,CM 为我曾经使用 Explorer 连接到的每个远程驱动器都有一个条目(是的,我已经选中 "remember my credentials" 的复选框)。包括网络服务器上的驱动器。
所有浏览器(Firefox 除外)都将用于在一台机器上访问文件共享的 username/password 与用于在同一台机器上访问网站的 username/password 混为一谈。一旦我删除了网络服务器的 CM 条目,它就起作用了。
我有两个 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 服务器 2016,IIS 10,.NET 4.7.2。桌面是 Windows 7
<system.web>
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
</system.web>
在 IIS 中只启用了 Windows 身份验证
Credential Manager 是罪魁祸首。
事实证明,CM 为我曾经使用 Explorer 连接到的每个远程驱动器都有一个条目(是的,我已经选中 "remember my credentials" 的复选框)。包括网络服务器上的驱动器。
所有浏览器(Firefox 除外)都将用于在一台机器上访问文件共享的 username/password 与用于在同一台机器上访问网站的 username/password 混为一谈。一旦我删除了网络服务器的 CM 条目,它就起作用了。