簡體   English   中英

如何在Ldap中將用戶帳戶控制屬性固定為512

[英]How to fix the user account control attribute to 512 in Ldap

使用Java代碼,我試圖在AD LDAP中創建用戶,但是我無法通過代碼將userAccountControl狀態設置為512,但我將userAccountControl狀態設置為512,但是創建的用戶具有不同的userAccountControl狀態,即544。

創建用戶后,我無法使用其ID(DN)和密碼登錄LDAP。

我正在使用代碼:

attributes.add(new LDAPAttribute("userAccountControl", "512"));
attributes.add(new LDAPAttribute("userPassword", "Password@1"));

還有其他方法可以將userAccountControl設置為512嗎?

userAccountControl值544為512 + 32,這意味着 NORMAL_ACCOUNT + PASSWD_NOTREQD ,可能是因為在創建密碼時沒有密碼。 如果沒有密碼,則不能將其設置為512。

創建帳戶后,必須在第二步中設置密碼。 AD有點奇怪,因為userPassword屬性有時甚至按照您想象的那樣運行,甚至存在。 如果需要,可以在這里閱讀。 但是您最好只設置unicodePwd ,它總是以相同的方式工作,盡管它有點奇怪。

有這樣的Java示例在這里

public void updateUserPassword(String username, String password)
{
    try
    {
        System.out.println("updating password...\n");
        String quotedPassword = "\"" + password + "\"";
        char unicodePwd[] = quotedPassword.toCharArray();
        byte pwdArray[] = new byte[unicodePwd.length * 2];
        for (int i = 0; i < unicodePwd.length; i++)
        {
            pwdArray[i * 2 + 1] = (byte) (unicodePwd[i] >>> 8);
            pwdArray[i * 2 + 0] = (byte) (unicodePwd[i] & 0xff);
        }
        System.out.print("encoded password: ");
        for (int i = 0; i < pwdArray.length; i++)
        {
            System.out.print(pwdArray[i] + " ");
        }
        System.out.println();
        ModificationItem[] mods = new ModificationItem[1];
        mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, new BasicAttribute("UnicodePwd", pwdArray));
        ldapContext.modifyAttributes("cn=" + username + BASE_NAME, mods);
    }
    catch (Exception e)
    {
        System.out.println("update password error: " + e);
    }
}

請注意,您必須使用LDAPS(LDAP over SSL,通常在端口636上)才能設置密碼。

您可以在設置密碼的同一請求中將userAccountControl設置為512。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM