|
Spec-Zone .ru
спецификации, руководства, описания, API
|
LDAP "сравниваются", работа позволяет клиенту спрашивать сервер, есть ли у именованной записи пара атрибут/значение. Это позволяет серверу держать определенные пары атрибут/значение в секрете (то есть, не представленный для общего доступа "поиска"), все еще разрешая клиенту ограниченное использование их. Некоторые серверы могли бы использовать эту функцию для паролей, например, хотя это небезопасно для клиента, чтобы передать пароли в виде открытого текста в "сравнить" работе непосредственно.
Чтобы выполнить это в JNDI, используйте соответственно ограниченные параметры за следующие методы:
Вот
// 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);
Если сравнивание будет успешно, то получающееся перечисление будет содержать единственный элемент, имя которого является пустым названием и который не содержит атрибутов.