以“ username@mydomain.com:something”身份登录的含义是什么


35

我的Windows 2008 R2计算机已加入域。

在登录屏幕上,如果我输入“ username@mydomain.com:something”作为用户名,我仍然可以正确登录,在末尾附加“:something”是什么意思?

我什至可以看到当前用户在切换用户屏幕中显示为“ username@mydomain.com:something”。Windows的功能吗?还是只是一个错误?如果这是一项功能,以“ username@mydomain.com”身份登录和以“ username@mydomain.com:something”身份登录有什么区别?

请注意,我尝试了不同的组合,例如“ mydomain \ username:something”和“ mydomain.com:something\username”。除“ username@mydomain.com:something”外,它们均不起作用。

2012年9月10日更新

贾斯汀提出的RunAs问题与我要解决的问题相似但不完全相同。如果你这样做

runas /user:username@mydomain.com:anything

你会得到

RUNAS ERROR: Unable to acquire user password

我验证了,当看到username@mydomain.com:anything用户名时,RunAs甚至都不会打扰LSA 。RunAs应该已经完成​​输入验证并在那里返回错误。

WinLogon是不同的。它接受这种格式的输入,并将“ username@mydomain.com:anything”传递到LSA。我确实看到LogonUserEx2里面的kerberos.dll被调用。这可能是WinLogon输入验证逻辑中的错误,或者这实际上是某些隐藏功能可接受的格式。

2012年9月26日更新

我刚刚向Microsoft Premier Support提交了一个案例。如果我从他们那里得到任何更新,我将在这里更新。


5
这太有趣了。
Shane Madden

“:something”可以是“:anything”吗?好像Windows将它当作端口号或扩展名一样,很奇怪。
布伦特·帕布斯特

2
疯。我刚刚进行了测试,可以创建domain.tld:anything的UPN后缀,并使用此UPN登录到域。
joeqwerty

1
如果执行runas /user:"jdearing@domain.com:something" "cmd /C dir c:\ & pause"此操作,则返回RUNAS错误:无法获取用户密码,而不是正常的1326:登录失败:用户名未知或密码错误。登录失败。
贾斯汀·迪林

2
仅供参考:也张贴在TechNet论坛上,不确定Windows团队是否会在这里看到:bit.ly/UF94GQ
Brent Pabst

Answers:


13

我通过Microsoft Premier Support开了一个案子。这是我和Microsoft支持人员之间的电子邮件。他们基本上说这是一个已知问题。这不是错误,也不是功能。

后端将解析用户名并正确去除非法字符。前端不执行任何UI验证,因为可能会有其他第三方登录UI。他们对用户名的要求可能有所不同。我认为他们指的是第三方证书提供者。

2012年10月5日上午

我刚刚和他们的一位工程师打了电话。再次向他解释整个问题。他很确定,:something到今天为止,这在内部没有特殊含义,但他不能保证将来可能会有所含义。

但是,他没有源代码来确认这一点。他将向他人发送带有源代码的电子邮件以确认这一点。

2012年10月3日晚上-我的回复

谢谢(你的)信息。但是,我确实尝试了其他一些非法字符,例如;;。和|。

登录UI可以成功检测到该错误,并告诉我我的用户名或密码不正确。

如果前端确实不进行任何输入验证,而后端确实可以去除所有非法字符,为什么登录UI不允许我以Harvey@company.com|something或Harvey@company.com的身份登录;除了Harvey@company.com:其他。

这种奇怪的行为仅发生在“:”上。

-哈维

2012年10月3日下午-MS支持回复

哈维,你好

前端验证中没有错误,因为前端不执行任何验证。输入凭据并尝试登录后,将执行验证,然后在后台执行验证,并显示相应的错误。

没有在前面执行验证的原因是,因为使用了其他第三方登录UIO,并且对工作和验证用户的要求可能有所不同。某些用户界面可能要求用户名采用diff格式,因此在用户输入凭据时执行验证会破坏这些用户界面。

对于后端,无论前端中存在哪个UI,每个UI都会调用后端身份验证API。因此,在后端执行验证可确保正确的身份验证

关于XXXX

2012年10月3日下午-我的回复

我也是程序员,所以我理解有关前端和后端不同处理的说明。

因此,这听起来像前端UI输入验证逻辑中的一个错误,尽管后端没有错误。

请注意,我还尝试使用runas.exe做同样的事情。在将格式错误的用户名传递给后端之前,runas.exe向我显示了错误消息。因此,对我来说,runas.exe正在执行正确的输入验证。

如果您仍然认为UI前端中没有错误,您能否解释一下允许最终用户键入格式错误的用户名,然后将其显示在屏幕上的目的?

谢谢,哈维

2012年10月3日上午-MS支持回复

哈维,你好

抱歉,敬请见谅。我已经将您的问题转发给了我的中小企业,这是他的答复:没有错误。用户界面将显示您键入的内容。后端解析字符串以确定域和用户名。这样做是正确的,因为:是非法字符。

如果可以澄清您的问题,或者我可以进一步帮助您,请告诉我。

关于XXXXX


3
出色的工作和答案。我感到遗憾的是,我对此只有一个投票。(而且,FWIW,您启发我用其他“非法”字符对此进行测试。)
HopelessN00b 2012年

当我与供应商打交道并得到诸如此类的回避性答案时,我很喜欢它。我特别喜欢与符文行为的比较,以及明显的不一致之处,其中仅剥离了一个特定的“非法字符”(以及之后的所有内容……),但在联系MS方面做得非常出色。至少您不必说服他们0.002c!= $ 0.002 :)
乔恩·克洛斯凯
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.