Аутентификация LDAP на удаленном сервере - PullRequest
0 голосов
/ 25 октября 2018

Я развернул войну на удаленном сервере tomcat9 с помощью.Доступ к серверу LDAP возможен только из внутренней сети.Сервер приложений и сервер LDAP находятся в одной сети.Поэтому я пытаюсь подключиться к серверу LDAP через эту конфигурацию.
SecurityConfiguration

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Bean
    public Md5PasswordEncoder md5PasswordEncoder() {
        return new Md5PasswordEncoder();
    }

    @Autowired
    public void registerGlobalAuthentication(AuthenticationManagerBuilder auth) throws Exception {
        auth
                .ldapAuthentication()
                .userDnPatterns("uid={0},ou=people")
                .contextSource()
                .url("ldap://xx.xx.xx.xx:389/dc=xx,dc=xx,dc=xx")
                .and()
                .passwordCompare().passwordEncoder(md5PasswordEncoder()).passwordAttribute("password");
     }
@Bean
    public AuthenticationManager getAuthenticationManager() throws Exception {
        return super.authenticationManagerBean();
    }
@Override
    protected void configure(HttpSecurity http) throws Exception {
   http.authorizeRequests().antMatchers("/css/**").permitAll().anyRequest()
                .fullyAuthenticated().and().formLogin().defaultSuccessUrl("/welcome");
    }
}

Затем, когда я пытаюсь подключиться к серверу, у меня есть
Error: javax.naming.CommunicationException: [xx.xx.x.xx]:[389] [Root exception is java.net.ConnectException: Connection refused: connect]

Другой способ - у этого сервера LDAP есть сертификат для подключения ssl, который я устанавливаю и проверяю, находится ли он в доверенном хранилище.Как говорит гид,

Это означает, что вы будете доверять сертификату на сервере LDAP и будете правильно использовать SSL в своей тестовой среде (вместо того, чтобы иметь какой-либо собственный код для отключения части проверки SSL).После того, как вы сделали это (один раз), ваш код должен работать без каких-либо изменений.

chage config to ldaps: //xx.xx.xx.xx: 636 и иметь ошибку

Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present
Caused by: org.springframework.ldap.CommunicationException: simple bind failed: xx.xx.x.xx:636; nested exception is javax.naming.CommunicationException: simple bind failed: xx.xx.xx.xx:636 [Root exception is javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names present]

PS из putty (ssh) с помощью команды openssl s_client -connect xx.xx.xx.xx: 636 У меня есть

No client certificate CA names sent
---
SSL handshake has read 1378 bytes and written 663 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : AES256-SHA256
    Session-ID: D7C55F5D3288CEC64B6B9FADCD7D4C6683311DB75750A9E3F4C2527A1F5C1D72
    Session-ID-ctx:
    Master-Key: DED896B18F2345CA8EDDAC43E3AB0CA649EAC14460526C3B85F48D9FEDA7C3C110B409AFFD895E87099BA683B2630A6A
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1540467501
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
No client certificate CA names sent
---
SSL handshake has read 1378 bytes and written 663 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : AES256-SHA256
    Session-ID: D7C55F5D3288CEC64B6B9FADCD7D4C6683311DB75750A9E3F4C2527A1F5C1D72
    Session-ID-ctx:
    Master-Key: DED896B18F2345CA8EDDAC43E3AB0CA649EAC14460526C3B85F48D9FEDA7C3C110B409AFFD895E87099BA683B2630A6A
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1540467501
    Timeout   : 300 (sec)
    Verify return code: 18 (self signed certificate)
---
closed

Буду благодарен за любые решения.

...