我的 Windows 2008 R2 机器已加入域。
在登录屏幕上,如果我输入“[电子邮件保护]:something”作为用户名,我仍然可以正常登录,末尾附加的“:something”是什么意思?
我甚至可以看到当前用户显示为“[电子邮件保护]:something”。这是 Windows 的一个功能吗?还是只是一个错误?如果是功能,那么以“[电子邮件保护]“并以”身份登录[电子邮件保护]:某物”?
请注意,我尝试了不同的组合,例如“mydomain\username:something”和“mydomain.com:something\username”。除了“[电子邮件保护]:某物”。
2012 年 9 月 10 日更新
Justin 提出的 RunAs 问题与我想要解决的问题类似,但并不完全相同。如果你这样做
runas /user:[email protected]:anything
你会得到
RUNAS ERROR: Unable to acquire user password
我验证了 RunAs 在看到用户名时甚至懒得调用 LSA。RunAs[email protected]:anything
应该进行输入验证并在那里返回错误。
WinLogon 则不同。它接受这种格式的输入,并传递“[电子邮件保护]:anything” 进入 LSA。我确实看到LogonUserEx2
内部的 kerberos.dll 被调用了。这要么是 WinLogon 输入验证逻辑中存在错误,要么这确实是某些隐藏功能可接受的格式。
2012 年 9 月 26 日更新
我刚刚向 Microsoft Premier Support 提交了一个案例。如果我收到他们的任何更新,我会在这里更新。
答案1
我向 Microsoft Premier Support 提交了一个案例。这是我与 Microsoft 支持之间的电子邮件。他们基本上说这是一个已知问题。这不是一个错误,也不是一个功能。
后端会解析用户名并正确删除非法字符 前端不进行任何 UI 验证,因为可能还有其他第三方登录 UI。他们对用户名的要求可能不同。我认为他们指的是第三方凭证提供程序。
2012 年 10 月 5 日上午
我刚刚和他们的一位工程师通了电话。再次向他解释了整个问题。他很确定这:something
在今天内部没有特殊含义,但他不能保证这在未来会有什么含义。
但是,他没有源代码来确认这一点。他打算向其他人发送一封包含源代码的电子邮件来确认这一点。
2012 年 10 月 3 日 晚上 - 我的回复
谢谢您的信息。不过,我确实尝试了一些其他非法字符,例如 ; 和 |。
登录用户界面可以成功检测到这一点并告诉我我的用户名或密码不正确。
如果前端确实不进行任何输入验证,而后端确实可以删除所有非法字符,那么为什么登录 UI 不允许我以[电子邮件保护]|某事或 [电子邮件保护];但[电子邮件保护]:某物。
这种奇怪的行为仅发生在“:”上。
-哈维
2012 年 10 月 3 日下午 - MS 支持回复
你好,哈维,
前端验证中没有 Bug,因为前端不执行任何验证。输入凭据并尝试登录后,将执行验证,然后在后台执行验证并显示相应的错误。
不执行前面的验证的原因是因为还有其他第三方登录 UIO 在使用,并且它们的工作和用户身份验证要求可能不同。某些 UI 可能需要不同格式的用户名,因此在用户输入凭据时执行验证会破坏这些 UI。
至于后端,每个 UI 都会调用后端身份验证 API,无论前端存在哪个 UI。因此,在后端执行验证可确保正确的身份验证
问候 XXXX
2012年10月3日下午 - 我的回复
由于我也是一名程序员,所以我了解前端和后端不同处理的解释。
所以,这听起来像次要的虽然后端没有错误,但前端 UI 输入验证逻辑存在错误。
请注意,我也尝试使用 runas.exe 执行相同的操作。runas.exe 在将格式错误的用户名传递给后端之前向我显示了错误消息。因此,对我来说,runas.exe 正在进行正确的输入验证。
如果您仍然认为 UI 前端没有错误,您能否解释一下允许最终用户输入格式错误的用户名然后将其显示在屏幕上的目的?
谢谢,哈维
2012 年 10 月 3 日上午 - MS 支持回复
你好,哈维,
抱歉回复延迟了。我已将您的问题转发给我的 SME,以下是他的回复:没有错误。UI 显示您输入的内容。后端解析字符串以确定域和用户名。它正确地执行了此操作,因为 : 是非法字符。
如果它能澄清您的疑问或我能为您提供进一步的帮助,请告诉我。
问候 XXXXX