我注意到我可以在LDAP中使用通配符进行查询。例如:
1.
ldapConnectionPool.search(baseDn, SearchScope.SUB, "objectSid=*")
此搜索请求将响应所有具有 objectSid 的条目
2.
此查询将返回所有不带
objectSid
的条目
ldapConnectionPool.search(baseDn, SearchScope.SUB, "!(objectSid=*)")
我想通过 PrimaryGroupToken 搜索条目,所以我尝试执行:
ldapConnectionPool.search(baseDn, SearchScope.SUB, "objectSid=*512")
和
ldapConnectionPool.search(baseDn, SearchScope.SUB, "objectSid=*-512")
有办法避免吗?
你不能。 objectSid 属性不是字符串属性(DirStudio 会为您转换它们) – 它们包含二进制 SID – 并且域控制器仅支持针对字符串 SID 的匹配(作为特殊情况),但仅支持精确匹配。
您将需要查找域 SID(如上一个线程中所述)并将其与您拥有的 RID 结合起来。您从 PrimaryGroupId 检索的 RID always 与用户所在域的 SID 前缀一起使用 – 不是任何其他域,当然也不是任何“内置”SID 前缀。