这与其说是请求帮助,不如说是出于好奇,但我注意到,在使用PrincipalPermission并验证用户是否属于Active Directory中的特定组时,它不会使用真实的组名,而是根据Windows2000之前的组名进行验证。通常情况下,这不会有什么不同--除非有人碰巧使这些值不同。
有人能想到为什么.Net应用程序接口会使用这个组名而不是“真实”名称吗?这给我带来了几个小时的悲痛和一些盲目的运气,最终弄清楚了一切。
发布于 2009-07-06 20:29:44
我假设(我自己没有测试和尝试过) PrincipalPermission属性将在Active Directory中使用"sAMAccountName“作为用户名和组名(例如"Users“或"JohnDoe"),而不是您期望的”唯一判别名“(DN) ("CN=Users","CN=John Doe")。
这背后的原因很可能是你正在工作的场景,例如一个独立的服务器,或者一个NT4域。在这些情况下,您根本没有任何基于AD的可分辨名称-但您有SAM帐户名。
因此,从某种意义上说,这在一开始可能有点令人惊讶--但在我看来,使用这些SAM帐户名(AD之前的名称)是有意义的-你不同意吗?
Marc
发布于 2019-08-08 20:01:58
原因是有保证的安全性。samAccountName属性is unique across all security principal objects in an NTDS domain。如果使用其他名称属性,则攻击者可以通过在不同组织单位或容器中创建具有相同名称的其他用户/组,轻松地解决安全权限问题。
https://stackoverflow.com/questions/1088041
复制相似问题