Я смог добиться этого, создав свой собственный 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());
Есть ли более элегантный способхотя?