fixed: LDAP服务不存在属性读取报错的bug

This commit is contained in:
xxx 2023-11-17 11:51:07 +08:00
parent 8e60deb3bc
commit c3b3e06a07

View File

@ -25,6 +25,7 @@ import java.util.*;
import javax.naming.Context; import javax.naming.Context;
import javax.naming.NamingEnumeration; import javax.naming.NamingEnumeration;
import javax.naming.NamingException; import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes; import javax.naming.directory.Attributes;
import javax.naming.directory.SearchControls; import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult; import javax.naming.directory.SearchResult;
@ -148,7 +149,7 @@ public class LdapUtil {
} }
// 唯一特征值 // 唯一特征值
String uSNCreated = (String) attributes.get("uSNCreated").get(); String uSNCreated = getAttribute(attributes, "uSNCreated");
if (StringUtil.isEmpty(uSNCreated)) { if (StringUtil.isEmpty(uSNCreated)) {
continue; continue;
} }
@ -253,17 +254,16 @@ public class LdapUtil {
ldapUser.setDn(item.getName()); ldapUser.setDn(item.getName());
// name解析 // name解析
String displayName = (String) attributes.get("displayName").get(); String displayName = getAttribute(attributes, "displayName");
if (StringUtil.isEmpty(displayName)) { if (StringUtil.isEmpty(displayName)) {
displayName = (String) attributes.get("cn").get(); displayName = getAttribute(attributes, "cn");
} }
ldapUser.setCn(displayName); ldapUser.setCn(displayName);
// 邮箱解析 // 邮箱解析
String email = String email = getAttribute(attributes, "mail");
attributes.get("mail") == null ? null : (String) attributes.get("mail").get(); if (StringUtil.isEmpty(email)) {
if (email == null) { getAttribute(attributes, "email");
email = attributes.get("email") == null ? null : (String) attributes.get("email").get();
} }
ldapUser.setEmail(email); ldapUser.setEmail(email);
@ -296,6 +296,15 @@ public class LdapUtil {
return ldapUser; return ldapUser;
} }
private static String getAttribute(Attributes attributes, String keyName)
throws NamingException {
Attribute attribute = attributes.get(keyName);
if (attribute == null) {
return null;
}
return (String) attribute.get();
}
private static String baseDNOuScope(String baseDN) { private static String baseDNOuScope(String baseDN) {
List<String> ouScopes = new ArrayList<>(); List<String> ouScopes = new ArrayList<>();
String[] rdnList = baseDN.toLowerCase().split(","); String[] rdnList = baseDN.toLowerCase().split(",");