歡迎您光臨本站 註冊首頁

新人求助啊!(用戶密碼修改)

←手機掃碼閱讀     火星人 @ 2014-03-04 , reply:0

新人求助啊!(用戶密碼修改)

我建了個根o=tg,c=cn

rootDN是cn=admin,o=tg,c=cn

然後加了條數據dn為 uid=zhu,o=tg,c=cn

該條數據完整信息為:
dn: uid=zhu,o=tg,c=cn
uid: zhu
objectClass: inetOrgPerson
mail: fantasia@sina.com
userPassword: {MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==
labeledURI: http://unmi.blogcn.com
sn: xuan
cn: name

現在我用rootDN登陸后可以修改uid=zhu的記錄的密碼,但是用該用戶登陸后卻不能修改他自己的密碼,說許可權不夠。

我用的是默認的訪問控制:
# access to dn.base="" by * read
# access to dn.base="cn=Subschema" by * read
# access to *
#        by self write
#        by users read
#        by anonymous auth

以下是錯誤信息:
LDAP Connected!
Error: NoPermission!
javax.naming.NoPermissionException: ; remaining name 'uid=zhu'
        at com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3013)
        at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2951)
        at com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2758)
        at com.sun.jndi.ldap.LdapCtx.c_modifyAttributes(LdapCtx.java:1441)
        at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_modifyAttributes(ComponentDirContext.java:255)
        at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(PartialCompositeDirContext.java:172)
        at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(PartialCompositeDirContext.java:161)
        at javax.naming.directory.InitialDirContext.modifyAttributes(InitialDirContext.java:148)
        at ldap.LDAP_Operating.LDAP_ModifyItem(LDAP_Operating.java:139)
        at ldap.LDAP_Operating.main(LDAP_Operating.java:176)
LDAP Connection Closed!


以下是我用的連接ldap的代碼:
_TbaleEevent = new Hashtable<String, String>();
_TbaleEevent.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
_TbaleEevent.put(Context.PROVIDER_URL, _LdapUrl + _LdapRoot);
_TbaleEevent.put(Context.SECURITY_AUTHENTICATION, "simple");//simple none
_TbaleEevent.put(Context.SECURITY_PRINCIPAL, "uid=" + _UserName + "," + _LdapRoot);
_TbaleEevent.put(Context.SECURITY_CREDENTIALS, _PassWord);

ps:_LdapRoot="o=tg,c=cn"
       _LdapUrl ="ldap://localhost:389/"
       _UserName ="zhu"


以下是修改密碼的代碼:
public void LDAP_ModifyItem() {
           ModificationItem modificationItem[] = new ModificationItem;
           modificationItem = new ModificationItem(DirContext.REPLACE_ATTRIBUTE,
                                                           new BasicAttribute("userPassword", "7895"));
           try {
                   ctx.modifyAttributes("uid=zhu", modificationItem);
           } catch (javax.naming.NoPermissionException e) {
                   System.out.println("Error: NoPermission!");
                   e.printStackTrace();
           } catch (NamingException e2) {
                   e2.printStackTrace();
           }
        }


希望知道解決辦法的朋友幫幫我,謝謝了。

[ 本帖最後由 9i00 於 2007-11-9 16:33 編輯 ]
《解決方案》

需要正確配置訪問控制列表,參考一下偶的這篇文章。
http://zh.linuxvirtualserver.org/node/385
而且要看一下後面的留言。

[火星人 ] 新人求助啊!(用戶密碼修改)已經有456次圍觀

http://coctec.com/docs/service/show-post-34238.html