这更像是一种好奇心而非请求帮助,但我注意到当使用PrincipalPermission并验证用户是Active Directory中特定组的一部分时,它不会使用真正的组名,而是验证前改为Windows 2000组名。通常这不会产生任何影响 - 除非有人碰巧使这些值不同。
有人能想到为什么.Net API会使用该组名而不是“真”名吗?这给我带来了几个小时的悲伤和一点点的运气,最终弄明白了。
答案 0 :(得分:3)
我会假设(没有经过测试并亲自尝试过)PrincipalPermission属性将使用Active Directory中的“sAMAccountName”来获取用户名和组名(例如“Users”或“JohnDoe”)而不是“专有名称” (DN)您可能期望(“CN = Users”,“CN = John Doe”)。
这背后的原因很可能是你正在努力的情况,例如:独立服务器或NT4域。在这些情况下,您根本没有任何基于AD的专有名称 - 但您确实拥有SAM帐户名称。
所以从某种意义上说,这一点看起来有点令人惊讶 - 但我认为使用这些SAM帐户名称(AD前名称)确实有意义 - 你不同意吗?
马克
答案 1 :(得分:0)
原因是保证安全性。 samAccountName
属性is unique across all security principal objects in an NTDS domain。如果使用其他名称属性,则攻击者可以通过在不同的组织单位或容器中创建具有相同名称的其他用户/组来轻松解决安全权限。