LdapContextSource buildLdapContextSource(LdapServerInventory inv, Map<String, Object> baseEnvironmentProperties) { LdapContextSource ldapContextSource; ldapContextSource = new LdapContextSource(); ldapContextSource.setUrl(inv.getUrl()); ldapContextSource.setBase(inv.getBase()); ldapContextSource.setUserDn(inv.getUsername()); ldapContextSource.setPassword(inv.getPassword()); ldapContextSource.setDirObjectFactory(DefaultDirObjectFactory.class); if (inv.getEncryption().equals(LdapEncryptionType.TLS.toString())) { setTls(ldapContextSource); } ldapContextSource.setCacheEnvironmentProperties(false); ldapContextSource.setPooled(false); ldapContextSource.setReferral("follow"); if (baseEnvironmentProperties != null && !baseEnvironmentProperties.isEmpty()) { ldapContextSource.setBaseEnvironmentProperties(baseEnvironmentProperties); } try { ldapContextSource.afterPropertiesSet(); logger.info("Test LDAP Context Source loaded "); } catch (Exception e) { logger.error("Test LDAP Context Source not loaded ", e); throw new CloudRuntimeException("Test LDAP Context Source not loaded", e); } return ldapContextSource; }
protected void setAdditionalContextSourceProperties(LdapContextSource ctx, final String dnsName) { DigestMd5DirContextAuthenticationStrategy authenticationStrategy = new DigestMd5DirContextAuthenticationStrategy(); // authenticationStrategy.setHostnameVerifier(new HostnameVerifier() { // public boolean verify(String hostname, SSLSession session) { // return hostname.equals(dnsName); // } // }); ctx.setAuthenticationStrategy(authenticationStrategy); ctx.setPooled(false); } }
/** * Get authenticate LDAP template. * * @return LDAP template */ @Bean(name="authenticateLdapTemplate") public LdapTemplate getAuthenticateLdapTemplate() { LdapContextSource source = new LdapContextSource(); source.setUrl(System.getProperty("ldap.url")); source.setPooled(false); Map<String, Object> baseEnvironmentProperties = new HashMap<String, Object>(); baseEnvironmentProperties.put("com.sun.jndi.ldap.connect.timeout", System.getProperty("ldap.timeout")); source.setBaseEnvironmentProperties(baseEnvironmentProperties); source.afterPropertiesSet(); return new LdapTemplate(source); }
protected void setAdditionalContextSourceProperties(LdapContextSource ctx, final String dnsName) { DefaultTlsDirContextAuthenticationStrategy authenticationStrategy = new DefaultTlsDirContextAuthenticationStrategy(); authenticationStrategy.setHostnameVerifier(new HostnameVerifier() { public boolean verify(String hostname, SSLSession session) { return hostname.equals(dnsName); } }); ctx.setAuthenticationStrategy(authenticationStrategy); ctx.setPooled(false); } }
/** * Get transaction proxy. * * @return transaction proxy */ @Bean(name="contextSourceTransactionAwareProxy") public TransactionAwareContextSourceProxy getTransactionProxy() { LdapContextSource source = new LdapContextSource(); source.setUrl(System.getProperty("ldap.url")); // Do not set ldap.base, spring-ldap won't generate full DN in the object-to-directory mapping //source.setBase(System.getProperty("ldap.base")); source.setUserDn(System.getProperty("ldap.manager.dn")); source.setPassword(System.getProperty("ldap.manager.pswd")); source.setPooled(false); Map<String, Object> baseEnvironmentProperties = new HashMap<String, Object>(); baseEnvironmentProperties.put("com.sun.jndi.ldap.connect.timeout", System.getProperty("ldap.timeout")); source.setBaseEnvironmentProperties(baseEnvironmentProperties); source.afterPropertiesSet(); PoolingContextSource configurePooling = configurePooling(source); return new TransactionAwareContextSourceProxy(configurePooling); }
/** * Spring context source for ldap connection * * @return Ldap context */ @Bean @ConditionalOnMissingBean public LdapContextSource contextSource() { LdapContextSource ldapContextSource = new LdapContextSource(); ldapContextSource.setUrls(ldapUrl); ldapContextSource.setBase(ldapBaseDN); ldapContextSource.setUserDn(ldapUserDN); ldapContextSource.setPassword(ldapPassword); ldapContextSource.setPooled(true); return ldapContextSource; }
@Override protected final Object doCreateInstance(final String dnsName) throws Exception { Assert.hasText(userDn); LdapContextSource instance = new LdapContextSource(); instance.setUrl("ldap://" + dnsName); instance.setUserDn(userDn); instance.setPassword(password); instance.setBase(base); instance.setPooled(pooled); setAdditionalContextSourceProperties(instance, dnsName); instance.afterPropertiesSet(); return instance; }
@Test public void testGetAnonymousEnvWithPoolingInBaseEnvironmentAndPoolingOff() throws Exception { tested.setUrl("ldap://ldap.example.com:389"); HashMap map = new HashMap(); map.put(LdapContextSource.SUN_LDAP_POOLING_FLAG, "true"); tested.setBaseEnvironmentProperties(map); tested.setPooled(false); tested.afterPropertiesSet(); Hashtable env = tested.getAnonymousEnv(); assertThat(env.get(Context.PROVIDER_URL)).isEqualTo("ldap://ldap.example.com:389"); assertThat(env.get(LdapContextSource.SUN_LDAP_POOLING_FLAG)).isNull(); }
@Override protected final Object doCreateInstance(final String dnsName) throws Exception { Assert.hasText(userDn); LdapContextSource instance = new LdapContextSource(); instance.setUrl("ldap://" + dnsName); instance.setUserDn(userDn); instance.setPassword(password); instance.setBase(base); instance.setPooled(pooled); setAdditionalContextSourceProperties(instance, dnsName); instance.afterPropertiesSet(); return instance; }
@Test public void testGetAuthenticatedEnv() throws Exception { tested.setBase("dc=example,dc=se"); tested.setUrl("ldap://ldap.example.com:389"); tested.setPooled(true); tested.setUserDn("cn=Some User"); tested.setPassword("secret"); tested.afterPropertiesSet(); Hashtable env = tested.getAuthenticatedEnv("cn=Some User", "secret"); assertThat(env.get(Context.PROVIDER_URL)).isEqualTo("ldap://ldap.example.com:389/dc=example,dc=se"); assertThat(env.get(LdapContextSource.SUN_LDAP_POOLING_FLAG)).isEqualTo("true"); assertThat(env.get(Context.SECURITY_PRINCIPAL)).isEqualTo("cn=Some User"); assertThat(env.get(Context.SECURITY_CREDENTIALS)).isEqualTo("secret"); // check that base was added to environment assertThat(env.get(DefaultDirObjectFactory.JNDI_ENV_BASE_PATH_KEY)).isEqualTo(LdapUtils.newLdapName("dc=example,dc=se")); }
private LdapContextSource getLdapContextSource() throws Exception { LdapContextSource ldapContextSource = new DefaultSpringSecurityContextSource( ldapURL); ldapContextSource.setUserDn(ldapBindDN); ldapContextSource.setPassword(ldapBindPassword); ldapContextSource.setReferral(ldapReferral); ldapContextSource.setCacheEnvironmentProperties(false); ldapContextSource.setAnonymousReadOnly(false); ldapContextSource.setPooled(true); ldapContextSource.afterPropertiesSet(); return ldapContextSource; }
@Test public void testGetAnonymousEnvWhenCacheIsOff() throws Exception { tested.setBase("dc=example,dc=se"); tested.setUrl("ldap://ldap.example.com:389"); tested.setPooled(true); tested.setUserDn("cn=Some User"); tested.setPassword("secret"); tested.setCacheEnvironmentProperties(false); tested.afterPropertiesSet(); Hashtable env = tested.getAnonymousEnv(); assertThat(env.get(Context.PROVIDER_URL)).isEqualTo("ldap://ldap.example.com:389/dc=example,dc=se"); assertThat(env.get(LdapContextSource.SUN_LDAP_POOLING_FLAG)).isEqualTo("true"); assertThat(env.get(Context.SECURITY_PRINCIPAL)).isNull(); assertThat(env.get(Context.SECURITY_CREDENTIALS)).isNull(); tested.setUrl("ldap://ldap2.example.com:389"); env = tested.getAnonymousEnv(); assertThat(env.get(Context.PROVIDER_URL)).isEqualTo("ldap://ldap2.example.com:389/dc=example,dc=se"); } }
@Test public void testGetAnonymousEnv() throws Exception { tested.setBase("dc=some example,dc=se"); tested.setUrl("ldap://ldap.example.com:389"); tested.setPooled(true); tested.setUserDn("cn=Some User"); tested.setPassword("secret"); tested.afterPropertiesSet(); Hashtable env = tested.getAnonymousEnv(); assertThat(env.get(Context.PROVIDER_URL)).isEqualTo("ldap://ldap.example.com:389/dc=some%20example,dc=se"); assertThat(env.get(LdapContextSource.SUN_LDAP_POOLING_FLAG)).isEqualTo("true"); assertThat(env.get(Context.SECURITY_PRINCIPAL)).isNull(); assertThat(env.get(Context.SECURITY_CREDENTIALS)).isNull(); // check that base was added to environment assertThat(env.get(DefaultDirObjectFactory.JNDI_ENV_BASE_PATH_KEY)).isEqualTo(LdapUtils.newLdapName("dc=some example,dc=se")); // Verify that changing values does not change the environment values. tested.setBase("dc=other,dc=se"); tested.setUrl("ldap://ldap2.example.com:389"); tested.setPooled(false); env = tested.getAnonymousEnv(); assertThat(env.get(Context.PROVIDER_URL)).isEqualTo("ldap://ldap.example.com:389/dc=some%20example,dc=se"); assertThat(env.get(LdapContextSource.SUN_LDAP_POOLING_FLAG)).isEqualTo("true"); assertThat(env.get(Context.SECURITY_PRINCIPAL)).isNull(); assertThat(env.get(Context.SECURITY_CREDENTIALS)).isNull(); assertThat(env.get(DefaultDirObjectFactory.JNDI_ENV_BASE_PATH_KEY)).isEqualTo(LdapUtils.newLdapName("dc=some example,dc=se")); }
private static LdapContextSource buildLdapContextSource(LdapDO ldapDO) { LdapContextSource contextSource = new LdapContextSource(); contextSource.setUrl(ldapDO.getUrl()); contextSource.setBase(ldapDO.getBase()); contextSource.setUserDn(ldapDO.getUserDn()); contextSource.setPassword(ldapDO.getPassword()); contextSource.setPooled(true); contextSource.afterPropertiesSet(); return contextSource; }
private static ContextSource getContextSource(String url, String username, String password) throws Exception { LdapContextSource contextSource = new LdapContextSource(); contextSource.setUrl(url); contextSource.setUserDn(username); contextSource.setPassword(password); contextSource.setPooled(false); contextSource.afterPropertiesSet(); return contextSource; }
/** * Creates an LdapContext from a configuration object. * * @param ldapConfig */ public static LdapContextSource createLdapContext(LDAPBaseSecurityServiceConfig ldapConfig) { LdapContextSource ldapContext = new DefaultSpringSecurityContextSource(ldapConfig.getServerURL()); ldapContext.setCacheEnvironmentProperties(false); ldapContext.setAuthenticationSource(new SpringSecurityAuthenticationSource()); if (ldapConfig.isUseTLS()) { // TLS does not play nicely with pooled connections ldapContext.setPooled(false); DefaultTlsDirContextAuthenticationStrategy tls = new DefaultTlsDirContextAuthenticationStrategy(); tls.setHostnameVerifier( new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; } }); ldapContext.setAuthenticationStrategy(tls); } return ldapContext; }
targetContextSource.setPassword(password); targetContextSource.setDirObjectFactory(dirObjectFactory); targetContextSource.setPooled(pooled);
targetContextSource.setPassword(password); targetContextSource.setDirObjectFactory(dirObjectFactory); targetContextSource.setPooled(pooled);
targetContextSource.setPassword(password); targetContextSource.setDirObjectFactory(dirObjectFactory); targetContextSource.setPooled(pooled);
@Before public void setUp() throws Exception { // Create some basic converters and a converter manager converterManager = new ConverterManagerImpl(); Converter ptc = new FromStringConverter(); converterManager.addConverter(String.class, "", Byte.class, ptc); converterManager.addConverter(String.class, "", Short.class, ptc); converterManager.addConverter(String.class, "", Integer.class, ptc); converterManager.addConverter(String.class, "", Long.class, ptc); converterManager.addConverter(String.class, "", Double.class, ptc); converterManager.addConverter(String.class, "", Float.class, ptc); converterManager.addConverter(String.class, "", Boolean.class, ptc); Converter tsc = new ToStringConverter(); converterManager.addConverter(Byte.class, "", String.class, tsc); converterManager.addConverter(Short.class, "", String.class, tsc); converterManager.addConverter(Integer.class, "", String.class, tsc); converterManager.addConverter(Long.class, "", String.class, tsc); converterManager.addConverter(Double.class, "", String.class, tsc); converterManager.addConverter(Float.class, "", String.class, tsc); converterManager.addConverter(Boolean.class, "", String.class, tsc); // Bind to the directory contextSource = new LdapContextSource(); contextSource.setUrl("ldap://127.0.0.1:" + port); contextSource.setUserDn(""); contextSource.setPassword(""); contextSource.setPooled(false); contextSource.afterPropertiesSet(); // Clear out any old data - and load the test data LdapTestUtils.cleanAndSetup(contextSource, baseName, new ClassPathResource("testdata.ldif")); }