我使用JNDI从组目录服务器查询Active目录:
Hashtable<String, Object> env = new Hashtable<String, Object>();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://" + serverUrl + "/");
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, userName + "@" + currentDomain);
env.put(Context.SECURITY_CREDENTIALS, credentials);
env.put("java.naming.ldap.attributes.binary", "objectSid");
// Create the initial context
DirContext ctx = new InitialDirContext(env);
当我返回objectSid并将byte []转换为十六进制字符串时,我得到sids,如:
HEX: ACED0005757200025B42ACF317F8060854E002000078700000001001020000000000052000000025020000
SID: S-172-23445241858-4088152667-134674455-188500-7370752-17825792-2-537198592-620756992
这导致字节0的值为172,字节1的值为237,以及解析4字节子权限结束时的3个字节。
字节0应始终为1
,字节2应为4字节子权限标识符的数量(在本例中为9)。由于我无法在预期和实际之间进行正确映射,因此我无法弄清楚发生了什么。
我在那里投注了一些我正在制作的新手错误,但无法弄清楚它可能是什么;我的希望是那里有人经历过这个,可以告诉我它是什么!
答案 0 :(得分:0)
这实际上不是LDAP问题,而是编写对象的问题我正在回到字节数组。教训是,调试更难......