簡體   English   中英

Java與LDAP:在沒有管理權限的情況下更改用戶密碼嗎?

[英]Java with LDAP: change users password without administrative rights?

在Java Web Project內,我試圖讓用戶更改自己的LDAP密碼(這是因為密碼已過期,還是因為他們只是想這么做)。 這些用戶沒有管理權限。

我已經能夠進行搜索以找到其中一個用戶,但是我無法更改其密碼。 有什么方法可以讓用戶在不授予他們管理權限的情況下更改自己的LDAP密碼?

這是我現在擁有的代碼:

        DirContext context;
        context = getInitialContext(username, password, ldapPath, ldapDomain);

        // Set up search constraints
        SearchControls cons = new SearchControls();
        String[] attrIDs = { "cn" };
        cons.setReturningAttributes(attrIDs);
        cons.setSearchScope(SearchControls.ONELEVEL_SCOPE);

        String USERS_OU = ldapPath.split("/")[ldapPath.split("/").length-1];
        NamingEnumeration<?> results = context.search(USERS_OU, "sAMAccountName=[name]", cons); //I'm searching the sAMA for testing purposes

        while (results.hasMore()) {
            SearchResult result = (SearchResult) results.next();
            Attributes attrs = result.getAttributes();
            String userCN = attrs.get("cn").get(0).toString();

            // Here I'm able to retrieve a user's CN

            ModificationItem[] mods = new ModificationItem[2];
            Attribute mod0 = new BasicAttribute("userPassword", password);
            Attribute mod1 = new BasicAttribute("userPassword", newPass);
            mods[0] = new ModificationItem(DirContext.REMOVE_ATTRIBUTE, mod0);
            mods[1] = new ModificationItem(DirContext.ADD_ATTRIBUTE, mod1);

            context.modifyAttributes([CN + ldapPath], mods );
        }

提前致謝!

更新:我已經檢查了rkosegi標記的問題,但是我認為該解決方案不適用於此處,因為OP試圖將其更改為“ unicodePwd”而不是“ userPassword”,並且“ unicodePwd”要求連接為ldaps。

我在研究中發現了一件事,那就是在.NET上有一個特殊的操作DirectoryEntry.Invoke方法,它是可能的操作“ ChangePassword”之一,不需要管理員權限。 也許Java上有類似的東西?

經過詳盡的研究,我得出的結論是,基於LDAP服務器的默認配置,codebrane的答案就是正確的答案。

我發現有一個指令可以防止用戶更改自己的密碼,即使該密碼已過期也是如此。 本文檔說明了如何確定是否已啟用)

因此解決方案是,要么更改指令以允許用戶更改自己的密碼,要么使用特權憑證進行更改。

謝謝!

通常,您以特權用戶身份綁定,並使用該用戶更改其他用戶的密碼。 您可以找到沒有特殊權限的用戶,這很可能是因為它允許匿名綁定和搜索。 更改用戶密碼需要使用特權帳戶來完成。

暫無
暫無

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

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