簡體   English   中英

如何通過JNDI更改LDAP密碼

[英]How to change LDAP password via JNDI

我試圖通過JNDI更改用戶的密碼,但我收到以下錯誤。

javax.naming.directory.SchemaViolationException:[LDAP:錯誤代碼65 - 條目uid = yiwei,ou = Administrator,o = SID,dc = QuizPortal不能修改,因為生成的條目違反了服務器模式:條目uid = yiwei ,ou = Administrator,o = SID,dc = QuizPortal違反Directory Server架構配置,因為它包含屬性用戶密碼,該條目中定義的任何對象類都不允許這樣做;

以下是我的代碼。

public class ModifyAtt
{

    public static String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory";
    public static String MY_HOST = "ldap://KhooGP-Comp1:1389/dc=QuizPortal";
    public static String MGR_DN = "cn=Directory Manager";
    public static String MGR_PW = "password";

    public static void main(String[] args)
    {

        //Identify service provider to use
        Hashtable env = new Hashtable();
        env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX);
        env.put(Context.PROVIDER_URL, MY_HOST);
        env.put(Context.SECURITY_AUTHENTICATION, "simple");
        env.put(Context.SECURITY_PRINCIPAL, MGR_DN);
        env.put(Context.SECURITY_CREDENTIALS, MGR_PW);

        try
        {
            // Create the initial directory context
            InitialDirContext initialContext = new InitialDirContext(env);
            DirContext ctx = (DirContext)initialContext;

            System.out.println("Context Sucessfully Initialized");

            ModificationItem[] mods = new ModificationItem[1];

            Attribute mod0 = new BasicAttribute("user password", "a");

            mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, mod0);

            ctx.modifyAttributes("uid=yiwei,ou=Administrator,o=SID", mods);

        }
        catch(Exception e)
        {
            System.err.println(e);
        }
    }
}

知道為什么?? 提前謝謝了..

凱文

啊..用戶密碼不應該有任何間距。

需要改變

Attribute mod0 = new BasicAttribute("user password", "a");

Attribute mod0 = new BasicAttribute("userpassword", "a");

屬性應該是沒有任何空格的單個單詞。

暫無
暫無

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

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