我在更改密碼或更新用戶信息時遇到此錯誤。 我已經嘗試了很多類似的代碼,但我仍然有錯誤。 這個問題可能是一個壞的CN定義,但在我的情況下應該是正確的,我真的很傷心,因爲我不能面對問題。JAVA ldap錯誤NO_OBJECT
- 通過LDAP連接到服務器:確定。
- SSL和cacerts:好吧。
- 通過代碼添加用戶:確定。
- 正在提取所有用戶信息:確定。
- 更新用戶信息:壞了。
這裏是一個簡單的代碼,我嘗試更新用戶的信息(描述),但沒有成功。 顯然,用戶「蝙蝠俠」存在於AD中。
public class ADConnection {
DirContext ctx = null;
String baseName = ",OU=SoftwareV3,OU=SOFTWARE,DC=SOFTWAREDEV,DC=LOCAL";
String serverIP = "192.168.10.45";
boolean ssl = true;
public ADConnection() {
try {
Hashtable ldapEnv = new Hashtable();
ldapEnv.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
if(ssl==true)
{
ldapEnv.put(Context.PROVIDER_URL, "ldaps://192.168.10.45:636/dc=softwaredev,dc=local");
ldapEnv.put(Context.SECURITY_PROTOCOL, "ssl");
}
else
{
ldapEnv.put(Context.PROVIDER_URL, "ldap://192.168.10.45:389/dc=softwaredev,dc=local");
}
ldapEnv.put(Context.SECURITY_AUTHENTICATION, "simple");
ldapEnv.put(Context.SECURITY_PRINCIPAL, new String("softwaredev" + "\\" + "superadmin"));
ldapEnv.put(Context.SECURITY_CREDENTIALS, "passw0rd");
ctx = new InitialDirContext(ldapEnv);
}
catch (Exception e) {
System.out.println(" bind error: " + e);
e.printStackTrace();
System.exit(-1);
}
}
public void updateDescription(String username) {
try {
System.out.println("updating...\n");
ModificationItem[] mods = new ModificationItem[1];
mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE,
new BasicAttribute("description", "batman_description"));
ctx.modifyAttributes("CN=" + username + baseName, mods);
System.out.println("update successful!!!");
}
catch (Exception e) {
System.out.println(" update error: " + e);
System.exit(-1);
}
}
public static void main(String[] args) {
ADConnection adc = new ADConnection();
adc.updateDescription("batman");
}
}
ERROR: 更新錯誤:javax.naming.NameNotFoundException:[LDAP:錯誤代碼32 - 0000208D:NameErr:DSID-0310020A,2001年問題(NO_OBJECT),數據0,的最佳匹配:
該崩潰位於函數updateDescription中的第6行代碼中。 有什麼建議嗎?
這可能是因爲您的用戶的完全限定域名不正確。使用任何LDAP瀏覽器(如JXplorer),請仔細檢查用戶的FQDN,並確保這是您在代碼中使用的那個。 –
好吧,我已經嘗試過使用uPn。該錯誤變成「BAD_NAME」。 但是,如果我輸入不正確的當前baseName,錯誤仍然是NO_OBJECT。不是很奇怪嗎? – user840718
UPN是一個不同的屬性,你需要找到用戶的'CN'屬性值。 – mvreijn