Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javax.naming.ServiceUnavailableException:套接字已关闭_Java_Spring_Ldap - Fatal编程技术网

javax.naming.ServiceUnavailableException:套接字已关闭

javax.naming.ServiceUnavailableException:套接字已关闭,java,spring,ldap,Java,Spring,Ldap,我尝试通过LDAP授权用户 public Authentication authenticate(Authentication auth) throws AuthenticationException { String username = getUserNameFromAuth(auth); String password = auth.getCredentials().toString(); HelpDescUser userDetails =

我尝试通过LDAP授权用户

public Authentication authenticate(Authentication auth) throws AuthenticationException {
        String username = getUserNameFromAuth(auth);
        String password = auth.getCredentials().toString();
        HelpDescUser userDetails = (HelpDescUser) userDetailsService.loadUserByUsername(username);
        String email = userDetails.getEmail();
        String url = "ldap://" + ldapHost + ":" + port + "/";
        ActiveDirectoryLdapAuthenticationProvider ldapProvider =
                    new ActiveDirectoryLdapAuthenticationProvider(null, url, rootDn);
        ldapProvider.setSearchFilter(filter);
        Authentication authenticate = ldapProvider.authenticate(new UsernamePasswordAuthenticationToken(email, password));
        if (authenticate.isAuthenticated()) {
            return new UsernamePasswordAuthenticationToken(userDetails, password, userDetails.getAuthorities());
        }
}
我收到这个:

原因:javax.naming.ServiceUnavailableException:okmarket.ru:636; 插座关闭在 java.naming/com.sun.jndi.ldap.Connection.readReply(Connection.java:426) 在 java.naming/com.sun.jndi.ldap.LdapClient.ldapBind(LdapClient.java:365) 在 java.naming/com.sun.jndi.ldap.LdapClient.authenticate(LdapClient.java:214) 位于java.naming/com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2795) 位于java.naming/com.sun.jndi.ldap.LdapCtx.(LdapCtx.java:320) java.naming/com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:192) 在 java.naming/com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:210) 在 java.naming/com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:153) 在 java.naming/com.sun.jndi.ldap.LdapCtxFactory.getInitialContext(LdapCtxFactory.java:83) 在 java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:730) 在 java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305) 在 java.naming/javax.naming.InitialContext.init(InitialContext.java:236) 在 java.naming/javax.naming.ldap.InitialLdapContext。(InitialLdapContext.java:154)


怎么了?问题出在我这边还是LDAP那边?

检查服务器详细信息。您是否能够ping到服务器。

检查LDAP是否启动。LDAP似乎已关闭。

别担心,我只是尝试连接
LDAP://
和端口
636

正确的方法是发出
ldaps://
请求或设置端口
389

看起来像是防火墙问题或不正确的连接参数,请参阅:请将其放在问题的评论部分,而不是作为答案。