Мое требование состоит в том, чтобы аутентифицировать логин пользователя (имя пользователя и пароль) для доступа к веб-приложению.
Используя Java, я смог аутентифицироваться, используя предоставленный пользователем логин:
boolean isCredentialsValid = false;
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, ldapUrl);
env.put(Context.SECURITY_AUTHENTICATION, "simple");
env.put(Context.SECURITY_PRINCIPAL, username);
env.put(Context.SECURITY_CREDENTIALS, password);
try {
DirContext ctx = new InitialDirContext(env);
ctx.close();
isCredentialsValid = true;
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(isCredentialsValid);
Может ли это быть реализовано непосредственно в Spring?Как использовать BindAuthenticator или PasswordComparisonAuthenticator?Я попытался использовать эту конфигурацию:
<bean id="contextSource"
class="org.springframework.security.ldap.DefaultSpringSecurityContextSource">
<constructor-arg value="IP of LDAP Server:389" />
</bean>
<bean id="ldapAuthenticator"
class="org.springframework.security.providers.ldap.authenticator.BindAuthenticator">
<constructor-arg ref="contextSource"/>
<property name="userDNPatterns" >
<list>
<value>uid={0}, dc=company,dc=com</value>
</list>
</property>
</bean>
<bean id="userSearch"
class="org.springframework.security.ldap.search.FilterBasedLdapUserSearch">
<constructor-arg index="0" value="ou=people" />
<constructor-arg index="1" value="(uid={0})" />
<constructor-arg index="2" ref="contextSource" />
<property name="searchSubtree" value="true" />
</bean>
Но я приветствую исключение UncategorizedLdapException.
Из того, что я прочитал в Spring LDAP, я не могу напрямую аутентифицировать логин пользователя без предоставления учетной записи администратора.
Любая помощь очень ценится!
Это трассировка стека:
Во время обработки LDAP возникло исключение без категории;вложенным исключением является javax.naming.NamingException: [LDAP: код ошибки 1 - 000004DC: LdapErr: DSID-0C0906DC, комментарий: для выполнения этой операции необходимо выполнить успешное связывание для соединения., данные 0, v1db0];оставшееся имя 'uid=username@company.com';вложенным исключением является org.springframework.ldap.UncategorizedLdapException: исключение без категории во время обработки LDAP;вложенным исключением является javax.naming.NamingException: [LDAP: код ошибки 1 - 000004DC: LdapErr: DSID-0C0906DC, комментарий: для выполнения этой операции необходимо выполнить успешное связывание для соединения., данные 0, v1db0];оставшееся имя 'uid=username@company.com'