Set anonymousReadOnly true when userDn is not provided

Fixes gh-473
This commit is contained in:
Eddú Meléndez
2018-01-22 22:32:08 -05:00
committed by Rob Winch
parent f09881c002
commit 0ebfec5df5
2 changed files with 62 additions and 0 deletions

View File

@@ -413,6 +413,7 @@ public abstract class AbstractContextSource implements BaseLdapPathContextSource
LOG.debug("AuthenticationSource not set - " + "using default implementation");
if (!StringUtils.hasText(userDn)) {
LOG.info("Property 'userDn' not set - " + "anonymous context will be used for read-write operations");
anonymousReadOnly = true;
}
else if (!StringUtils.hasText(password)) {
LOG.info("Property 'password' not set - " + "blank password will be used");

View File

@@ -0,0 +1,61 @@
package org.springframework.ldap.itest.ldap473;
import javax.naming.directory.DirContext;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.ldap.core.ContextSource;
import org.springframework.ldap.core.support.LdapContextSource;
import org.springframework.ldap.test.EmbeddedLdapServerFactoryBean;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import static org.assertj.core.api.Assertions.assertThat;
/**
* @author Eddú Meléndez
*/
@RunWith(SpringJUnit4ClassRunner.class)
public class Ldap473Test {
@Autowired
private ContextSource contextSource;
@Test
public void anonymous() {
DirContext readOnlyContext = contextSource.getReadOnlyContext();
assertThat(readOnlyContext).isNotNull();
}
@Configuration
static class ContextSourceConfig {
@Bean
public ContextSource contextSource() {
LdapContextSource contextSource = new LdapContextSource();
contextSource.setUrl("ldap://localhost:9321");
contextSource.setUserDn(null);
contextSource.setPassword(null);
return contextSource;
}
}
@Configuration
static class EmbeddedLdapConfig {
@Bean
public EmbeddedLdapServerFactoryBean embeddedLdapServer() {
EmbeddedLdapServerFactoryBean embeddedLdapServer = new EmbeddedLdapServerFactoryBean();
embeddedLdapServer.setPartitionName("example");
embeddedLdapServer.setPartitionSuffix("dc=261consulting,dc=com");
embeddedLdapServer.setPort(9321);
return embeddedLdapServer;
}
}
}