有关Active Directory中组组成员身份的JNDI帮助

时间:2009-04-27 07:27:06

标签: jndi

我正在尝试使用JNDI程序将一个组添加到Active Directory中的另一个组。这样做,我得到以下错误

  

[LDAP:错误代码53 - 00002142:   SvcErr:DSID-031A0FC0,问题5003   (WILL_NOT_PERFORM),数据0

我使用的代码段位于

之下
  1. 设置组属性
  2. Attributes attrs = new BasicAttributes(true);
    attrs.put("objectClass","group")
    attrs.put("description","A test group");
    

    1. 将群组添加到其他群组
    2. try{
          ModificationItem member[] = new ModificationItem[1];
          member[0]= new ModificationItem(DirContext.ADD_ATTRIBUTE, new BasicAttribute("member", groupDN)); 

      ctx.modifyAttributes(grpDN,member);
       System.out.println("Added group to group: " + grpDN);
      

      }catch (NamingException e) { System.err.println("Problem adding group to group: " + e); }

      我能够使用几乎相同类型的代码(下面)将用户添加到组。

      1. 设置用户属性
      2. ctx.modifyAttributes(grpDN,member);
         System.out.println("Added group to group: " + grpDN);
        

        1. 将用户添加到群组
        2. // Create attributes to be associated with the new user
          Attributes attrs = new BasicAttributes(true); 
          attrs.put("objectClass","user");
          attrs.put("samAccountName","Perry");
          attrs.put("cn","Perry");

          attrs.put("givenName","Perry"); attrs.put("sn","Perry"); attrs.put("displayName","Perry Peterson"); attrs.put("description","Research Engineer");

          int UF_ACCOUNTDISABLE = 0x0002; int UF_PASSWD_NOTREQD = 0x0020; int UF_PASSWD_CANT_CHANGE = 0x0040; int UF_NORMAL_ACCOUNT = 0x0200; int UF_DONT_EXPIRE_PASSWD = 0x10000; int UF_PASSWORD_EXPIRED = 0x800000;

          attrs.put("userAccountControl",Integer.toString(UF_NORMAL_ACCOUNT + UF_PASSWD_NOTREQD + UF_PASSWORD_EXPIRED+ UF_ACCOUNTDISABLE));

          是否有人知道我在这里做错了什么,或者是否有任何必须为组设置的属性,就像用户的情况一样。我的JNDI客户端和服务器之间有SSL连接,我能够成功重置用户密码(如果不存在SSL则无法实现)

          我怀疑这种情况正在发生,因为我之前创建的组未正确创建

          此致

          佩里

1 个答案:

答案 0 :(得分:0)

这是因为默认情况下将组创建为安全组,并且无法将组添加到组(如果是安全组)

如果您想拥有嵌套组,请将组创建为通用分发,然后只有您可以将组添加到组

此行为适用于Active Directory。我不知道其他目录。