#java #mysql #active-directory #ldap
Вопрос:
Я новичок здесь, как получить отключенных пользователей и распечатать их из Active Directory с помощью java. ниже приведен исходный код
ActiveDirectory.java
public boolean isAccountEnable(String enroll) throws NamingException {
String dn = getDistinguishedName(enroll);
int userAccountControlOrig = Integer.parseInt(ctx.getAttributes(dn).get(USER_ACCOUNT_CONTROL_ATTRIBUTE).get().toString());
return (userAccountControlOrig == 66080) || (userAccountControlOrig == 66048);
}
getDistinguishedName()
public String getDistinguishedName(String enroll) throws NamingException {
String dn = "";
String searchFilter = "(amp;(objectClass=user)(sAMAccountName=" enroll "))";
SearchControls searchControls = new SearchControls();
searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration<SearchResult> results = ctx.search(DOMAIN_ROOT, searchFilter, searchControls);
SearchResult searchResult = null;
if (results.hasMoreElements()) {
searchResult = (SearchResult) results.nextElement();
if (results.hasMoreElements()) {
System.err.println("Matched multiple users for the accountName: " enroll);
return null;
}
}
dn = searchResult.getNameInNamespace();
return dn;
}
fetchDisableUser.java
здесь я сравниваю базу данных и active directory после сравнения, если пользователь найден отключенным, я просто хочу распечатать этого пользователя, ниже приведен исходный код
Statement st = con.createStatement();
ResultSet rs = st.executeQuery("select distinct PER_ID, replace(NAME, '/', '') as NAME , SEX, DESIG_NAME, DEPT_NAME from Employees;");
List<Document> suspense = new ArrayList<>();
while (rs.next()) {
ActiveDirectory ad = new ActiveDirectory();
String pid = Integer.toString(rs.getInt(1));
if (!ad.isAccountEnable(pid)){
Document sup = new Document();
sup.append("pid", Integer.toString(rs.getInt(1)));
sup.append("name", rs.getString(2));
sup.append("gender", rs.getString(3));
sup.append("desig", rs.getString(4));
sup.append("dept", rs.getString(5));
suspense.add(sup);
}
}
st.close();
rs.close();
JSONObject json = new JSONObject();
json.put("success", true);
json.put("suspense", suspense);
String res = json.toString();
Я нашел приведенный ниже код в Интернете, и я не знаю, где реализовать этот код в fetchDisableUser.java или в ActiveDirectory.java кто-нибудь может мне в этом помочь…
Проще всего использовать побитовый фильтр в запросе LDAP: (userAccountControl:1.2.840.113556.1.4.803:=2)
или
(amp;(Класс объектов=пользователь)(Категория объектов=человек)(управление учетными записями пользователей:1.2.840.113556.1.4.803:=2))