Удаление пароля пользователя из результатов поиска UnboundId LDAP - PullRequest
0 голосов
/ 25 октября 2018

Используя ApacheDS , я могу сделать DefaultDirectoryService#setPasswordHidden, чтобы при выполнении запросов LDAP возвращаемые записи удаляли атрибут userPassword из набора результатов.

Какя бы достиг того же, используя UnboundId , скажем, с InMemoryDirectoryServer?

1 Ответ

0 голосов
/ 25 октября 2018

Я смог добиться этого, создав свой собственный InMemoryOperationInterceptor:

static class PasswordRemovingOperationInterceptor 
    extends InMemoryOperationInterceptor {

    @Override
    public void processSearchEntry(InMemoryInterceptedSearchEntry entry) {
        if (!entry.getRequest().getAttributeList().contains("userPassword")) {
            if (entry.getSearchEntry().getAttribute("userPassword") != null) {
                Entry old = entry.getSearchEntry();
                Collection<Attribute> attributes = old.getAttributes().stream()
                    .filter(attribute -> 
                        !"userPassword".equals(attribute.getName()))
                    .collect(Collectors.toList());
                Entry withoutPassword = new Entry(old.getDN(), attributes);
                entry.setSearchEntry(withoutPassword);
            }
        }
    }
}

И затем добавив его в конфигурацию запуска:

InMemoryDirectoryServerConfig config = ...;
config.addInMemoryOperationInterceptor(new PasswordRemovingOperationInterceptor());

Есть ли более элегантный способхотя?

...