我有一个带有两个网站的 Web 服务器:a 和 b。
a是生产。
b 是测试/分期。
在我之前编写这些应用程序的人依赖于
Request.ServerVariables("LOGON_USER")
当用户通过 Windows 身份验证对服务器进行身份验证时分配。在 a 上,这很好用,在 b 上有一些奇怪的地方:
我收到登录提示,但我不能使用 [域]\myusername 登录,但我可以使用\\myusername 来登录,同样的密码(基于 AD)。据我所知,IIS 配置是相同的,唯一不一致的是从 a.domain.com 指向 b.domain.com 的 DNS CNAME。更改该 DNS 记录以指向 IP 解决了问题,但我试图了解发生了什么。
以前的 DNS 记录:
b.domain.com > a.domain.com
工作 DNS 记录:
b.domain.com > 10.0.x.131
它应该是 b > a > 常规 Windows 身份验证,但由于某种原因,我发现自己使用了\\,它是否在域名上添加了两次或其他什么?关于身份验证,\\到底是什么?
有道理?
最佳答案
一些想法。
话虽如此,在没有其他信息的情况下,“\”很可能来自两件事之一。
您可能有代码的两个不同部分,每个部分都添加了“\”。域名在很多情况下都有效,无论是否带有尾随“\”。因此,windows身份验证很有可能在域名之后和登录id之前添加一个,以确保两者之间的分离。如果您的 DNS CNAME 查找出于类似原因自动在域名末尾添加一个,则这两个可能会叠加。
有可能在 DNS 进程的某个地方,域可能已经通过转换器将控制字符更改为转义字符(作为避免某些安全漏洞的一种方式)。 '\' 用作此类转义字符的基础,因此需要它自己的转义字符 ('\')。
关于IIS Windows 身份验证怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15366649/