java - javax.naming.ServiceUnavailableException:套接字关闭
问题描述
我尝试通过 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.LdapClient.ldapBind(LdapClient.java:365) 在 java.naming/com.sun.jndi.ldap.LdapClient.ldapBind(LdapClient.java:365) 在 java.naming/com.sun.jndi.ldap.Connection.readReply(Connection.java:426) 在 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。在 java.getInitialContext(LdapCtxFactory.java:83)。
怎么了?是我这边的问题,还是 LDAP 那边的问题?
解决方案
别担心,我只是尝试连接ldap://
和 port 636
。正确的方法是提出ldaps://
请求或设置端口389
。
推荐阅读
- postgresql - PostgreSQL JSONB 函数的不同路径格式
- c++ - 如何从字符串转换为 char*
- c++ - CMake BUILD 未定义参考(findpng)
- mysql - 数据库规范化 - 表之间的“或”类型的关系
- wordpress - 如何将我的自定义字段添加到我的帖子内容中?
- javascript - 如何使用 forEach 函数创建多个项目符号
- flutter - Flutter:检测用户是否使用 Facebook 或 Google 登录
- file - 如何在 OpenShift 中访问 shapefile
- javascript - 如何将 JSON 文件数据显示到 HTML 表中(仅使用 JavaScript,而不是 jQuery)
- c# - 如何选择 Newtonsoft 动态类型属性值?