欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JAVA LDAP操作微软活动目录返回字节数组属性值

程序员文章站 2022-06-06 11:21:58
...

    在Oracle关于JavaSE的官方文档中查到如下描述,LDAP服务提供者支持String和byte[]两种格式的LDAP属性。

    默认情况下Attribute#get()返回的属性值的格式都是字符串类型的,如果想指定某属性的格式为字节数组类型(比如某属性可能在活动目录中存储的是图片、Word等二进制文件,那么返回字节数组类型会特别合适),需要事先在查找的上下文环境中指定:

……
env.put("java.naming.ldap.attributes.binary","objectGUID");//objectGUID也可以指定为其它属性
Context cxt = new InitialLdapContext(env,null);
……

 

    参考网址:

LDAP Naming Service Provider for the Java Naming and Directory InterfaceTM (JNDI)

http://download.oracle.com/javase/1.3/docs/guide/jndi/jndi-ldap.html

 

How do you convert an Active Directory objectGUID into something useful?

http://www.thatsjava.com/java-core-apis/19440/

 

    还有一个小问题,如果连接Ldap服务器的PROVIDER_URL中服务器与端口之外的路径含有中文,则需要事先使用java.net.URLEncoder进行编码,例如:

String baseDN=URLEncoder.encode("ou=软件应用事业部,ou=OrgTree,dc=cattsoft,dc=com", "utf-8");
env.put(Context.PROVIDER_URL, "ldap://192.168.123.8:389/"+baseDN);