LDAP Compare

LDAP“比较”操作允许 Client 端询问服务器命名条目是否具有属性/值对。这允许服务器将某些属性/值对保持 Secret(即,对于一般的“搜索”访问不公开),同时仍然允许 Client 端对其进行有限的使用。例如,某些服务器可能使用此功能来 Importing 密码,尽管 Client 端在“比较”操作本身中传递明文密码是不安全的。

要在 JNDI 中完成此操作,请对以下方法使用适当约束的参数:

这里的an example导致使用 LDAP“比较”操作。

// Value of the attribute
byte[] key = {(byte)0x61, (byte)0x62, (byte)0x63, (byte)0x64, 
              (byte)0x65, (byte)0x66, (byte)0x67};

// Set up the search controls
SearchControls ctls = new SearchControls();
ctls.setReturningAttributes(new String[0]);       // Return no attrs
ctls.setSearchScope(SearchControls.OBJECT_SCOPE); // Search object only

// Invoke search method that will use the LDAP "compare" operation
NamingEnumeration answer = ctx.search("cn=S. User, ou=NewHires", 
                                      "(mySpecialKey={0})", 
                                       new Object[]{key}, ctls);

如果比较成功,则结果枚举将包含一个名称为空名称且不包含属性的项目。