Witam,
Mam lekki problem autoryzacji użytkownika z domeną. Komputer na którym odpalam projekt jest poza domeną.
Struktura w domenie:
nazwa domeny: DOMENA.local
Lokalizacja użytkownika: Duser/B/B1/* (użytkownicy)
klasa WebSecurity
@Configuration
public class WebSecurityControl extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().fullyAuthenticated()
.and()
.formLogin();
}
@Override
public void configure(AuthenticationManagerBuilder auth) throws Exception {
auth
.ldapAuthentication()
.userDnPatterns("uid={0},ou=BI,ou=B,ou=Duser")
.groupSearchBase("ou=BI,ou=B,ou=Duser")
.contextSource()
.url("ldap://IP:389/dc=DOMENA,dc=local")
.and()
.passwordCompare()
.passwordEncoder(passwordEncoder())
.passwordAttribute("userPassword");
}
private PasswordEncoder passwordEncoder() {
final BCryptPasswordEncoder bcrypt = new BCryptPasswordEncoder();
return new PasswordEncoder() {
@Override
public String encode(CharSequence rawPassword) {
return bcrypt.encode(rawPassword.toString());
}
@Override
public boolean matches(CharSequence rawPassword, String encodedPassword) {
return bcrypt.matches(rawPassword, encodedPassword);
}
};
}
@Bean
public BCryptPasswordEncoder bcryptEncoder() {
return new BCryptPasswordEncoder();
}
Niestety ciągle wyświetla się błąd:
Uncategorized exception occured during LDAP processing; nested exception is javax.naming.NamingException: [LDAP: error code 1 - 000004DC: LdapErr: DSID-0C0907C2, comment: In order to perform this operation a successful bind must be completed on the connection., data 0, v2580]; remaining name 'uid=(user??),ou=BI,ou=B,ou=Duser'
Szczerze próbowałem na wiele sposobów rozwiązać dany. Za wszelką pomoc dziękuje z góry.
Pytanie czy można ominąć wpisywanie użytkownika i hasła, gdyż wolałbym się autoryzować bezpośrednio po logującym się użytkowniku.
Poszukaj przykładów zActiveDirectoryLdapAuthenticationProvider