Я пытаюсь подключиться к LDAP компании, и у меня много проблем. Я решаю один и вдруг получаю новый.
Прямо сейчас я думаю, что контекст хорошо определен и есть возможность подключения, но он жалуется на «Пустой кодированный пароль», и я не знаю, как с этим справиться.
Я пытаюсь пройти аутентификацию через пользователя службы.
Сейчас я работаю с этим кодом:
auth.ldapAuthentication()
.userSearchBase("ou=xxxx,ou=yyyy")
.userSearchFilter("SamAccountName={0}")
.contextSource()
.url("ldap://servername:389/dc=aaaa,dc=bbbb,dc=cccc")
.managerDn("CN=serviceUserName,OU=uuuu,OU=yyyy,DC=aaaa,DC=bbbb,DC=cccc")
.managerPassword("serviceUserPass")
.and()
.passwordCompare()
.passwordEncoder(passwordEncoder())
.passwordAttribute("password");
И
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
И у меня появляется эта ошибка:
2019-05-13 10: 41: 37.808 WARN 22928 --- [nio-8080-exec-6] o.s.s.c.bcrypt.BCryptPasswordEncoder: пустой закодированный пароль
2019-05-13 10: 41: 37.926 ОШИБКА 22928 --- [nio-8080-exec-6] w.a.UsernamePasswordAuthenticationFilter: при попытке аутентификации пользователя произошла внутренняя ошибка.
org.springframework.security.authentication.InternalAuthenticationServiceException: [LDAP: код ошибки 16 - 00000057: LdapErr: DSID-0C090D70, комментарий: ошибка в операции преобразования атрибута, данные 0, v1db1
Я пытаюсь изменить функцию PasswordEncoder на:
@Bean
public PasswordEncoder passwordEncoder() {
return new PasswordEncoder() {
@Override
public String encode(CharSequence rawPassword) {
return BCrypt.hashpw(rawPassword.toString(), BCrypt.gensalt(4));
}
@Override
public boolean matches(CharSequence rawPassword, String encodedPassword) {
return BCrypt.checkpw(rawPassword.toString(), encodedPassword);
}
};
}
И я проверяю, что переменная «encodedPassword» пуста («rawPassword» - это то, что я ввожу на странице входа в систему). Эта ошибка:
java.lang.IllegalArgumentException: соль не может быть нулевой
Я не знаю, означает ли это, что у него нет доступа к LDAP, если пароль не может быть закодирован, если он не находит пользователя ...
Любая помощь очень ценится.