从Java中的dirContext获取LDAP-Attributes,使用“sAMAccountName”而不是“CN”

时间:2017-05-24 13:47:02

标签: java active-directory ldap

我正在使用Java连接到Active Directory,现在我喜欢使用getAttributes的{​​{1}}方法来查找所有属性而不进行搜索。

我发现这个例子http://www.java2s.com/Code/Java/JNDI-LDAP/howtoretrieveallattributesofanamedobject.htm并且它工作正常 - 但它需要对象的CN,此时我没有CN。

这是我的代码:

DirContext

如果我更换此行:

Hashtable<String, Object> env = new Hashtable<String, Object>(11);
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, "ldap://192.168.18.106:389/OU=journaldesigner,DC=dataplan,DC=intern");
env.put(Context.SECURITY_PRINCIPAL, "kfriese@dataplan.intern" );
env.put(Context.SECURITY_CREDENTIALS, "fridolin" );
env.put(Context.SECURITY_AUTHENTICATION, "simple" );

DirContext ctx = new InitialDirContext(env);

Attributes answer = ctx.getAttributes("cn=Klaus Friese");

用这个

Attributes answer = ctx.getAttributes("cn=Klaus Friese");

我收到错误:

Attributes answer = ctx.getAttributes("sAMAccountName=kfriese");

我现在搜索了一段时间,但我没有发现任何相关内容 - 我可以使用sAMAccountName获取属性吗?我需要用CN吗? AD Server是Microsoft Active Directory。

由于 克劳斯

1 个答案:

答案 0 :(得分:0)

方法getAttributes()是一种专门的搜索,只接受搜索过滤器的名称。您无法使用sAMAccountName=kfriese,因为sAMAccountName不是名称。因此,要读取条目的所有属性,您必须知道其名称。