获取一个对象';通过在Java中的ActiveDirectry中通过LDAP解析其GUID来命名
nxlog生成的日志中有一个具有此格式的打印机设备GUID:获取一个对象';通过在Java中的ActiveDirectry中通过LDAP解析其GUID来命名,java,active-directory,ldap,guid,Java,Active Directory,Ldap,Guid,nxlog生成的日志中有一个具有此格式的打印机设备GUID: 119d0d80-699d-4e81-8e4e-5477e22ac1b3 我想通过LDAP解析设备的GUID来获取设备名称。但是,我遇到的最近的字段是响应中的objectGUID,它显然是Base64编码值: objectGUID::fuAW6fefLke30d46TDTUWA== 这两个以上的guid是相对的吗?(换句话说,我是否应该在格式转换后在AD中的objectGUID字段中搜索第一个GUID 如何在java中使用LDAPq
119d0d80-699d-4e81-8e4e-5477e22ac1b3
我想通过LDAP解析设备的GUID来获取设备名称。但是,我遇到的最近的字段是响应中的objectGUID
,它显然是Base64
编码值:
objectGUID::fuAW6fefLke30d46TDTUWA==
这两个以上的guid是相对的吗?(换句话说,我是否应该在格式转换后在
AD
中的objectGUID
字段中搜索第一个GUID
如何在java中使用LDAP
query获取对象名
无法通过getAttribute()
方法和下面的代码实现这一点:
//Create the initial directory context
LdapContext ctx = new InitialLdapContext(env,null);
//Bind directly using the string form of the GUID
String strGUID = "<GUID="+guid+">";
//Specify the attributes to return
String returnedAtts[]={"distinguishedName"};
Attributes attr = ctx.getAttributes(strGUID,returnedAtts);
//print out the retrieved attributes
if(attr!=null)
distinguishedName = attr.get("distinguishedName").get().toString();
System.out.println("distinguishedName: " + distinguishedName);
ctx.close();
名称(
)的格式正确吗?(我在ldapsearch
的响应输出中没有看到使用此格式的任何迹象)与必须使用的GUID相比,Microsoft Active Directory中使用的有点奇怪
你必须应付几个方面,包括
我确实找到了一些引用。您必须执行搜索。我不是Java开发人员,但从我的发现来看,
LdapContext
似乎不允许您这样做。如果可以,您可以尝试使用(并使用“LDAP://mydomain.com/”
作为LDAP路径。@user207421谢谢。这里的一个问题是我无法解码从ldapsearch响应获得的objectGUID
。(它成功地从Base64转换为Byte,但从Byte到string的转换产生了一个乱码字符串,与GUID字符串格式不太接近)因此,我无法确认此字段是否是我应该查找GUID的字段(例如119d0d80-699d-4e81-8e4e-5477e22ac1b3
)。因此我不确定搜索的目标是什么。
javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-0310021B, problem 2001 (NO_OBJECT), data 0, best match of:
''