En esta página: La Operación "Compare " LDAP La operación "compare" del LDAP permite a un cliente preguntarle a un servidor si la entrada nombrada tiene una pereja atributo/valor. Esto permite al servidor mantener secretas ciertas parejas atributo/valor (por ejemplo, no expuestas para accesos de "search" generales) mientras permite que los clientes limitados las usen. Algunos servidores podrían usar estas características para passwords, por ejemplo, aunque es inseguro para el cliente pasar password en texto claro en la propia operación "compare". Para conseguir esto en el JNDI, se usan argumentos convenientemente restringidos para los siguientes métodos:
Primero, el filtro debe ser de la forma "(nombe=valor)". No podemo usar comodines. Segundo, el ámbito de búsqueda debe ser SearchControls.OBJECT_SCOPE. Finalmente, debemos pedir que no se devuelvan atributos. Aquí tenemos un ejemplo: // 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 // Perform the search NamingEnumeration answer = ctx.search("cn=S. User, ou=NewHires", "(mySpecialKey={0})", new Object[]{key}, ctls); Si la comparación tiene éxtio, la enumeración resultante contendrá un sólo ítem cuyo nombre es el nombre vacío y que no contiene atributos.
|