JAVA_LDAP:从组

时间:2016-05-12 09:40:04

标签: java ldap jndi

我正在尝试使用java代码从LDAP组中删除用户。虽然看起来很简单,但它会导致memberuniquemember属性出错。

    public String removeGroupMembership(InitialDirContext ctx, String sGroup, String sMember){
    String status = "";
    System.out.println("entered removeGroupMembership:"+sGroup);
    System.out.println("The memeber to be added is: "+sMember);
    ModificationItem mods[] = new ModificationItem[1];
    mods[0]= new ModificationItem(InitialDirContext.REMOVE_ATTRIBUTE, new BasicAttribute("member", sMember));
      try {
        ctx.modifyAttributes(sGroup,mods);
        System.out.println("Group Modified");

错误 - 1.对于会员 -

  

javax.naming.directory.SchemaViolationException:[LDAP:错误代码65 - 无法在强制或可选属性列表中查找成员。];   剩下的名字'cn = ........'在   com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3166)at at   com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:3081)at at   com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2888)at at   com.sun.jndi.ldap.LdapCtx.c_modifyAttributes(LdapCtx.java:1475)at at   com.sun.jndi.toolkit.ctx.ComponentDirContext.p_modifyAttributes(ComponentDirContext.java:277)     在   com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(PartialCompositeDirContext.java:192)     在   com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(PartialCompositeDirContext.java:181)     在   javax.naming.directory.InitialDirContext.modifyAttributes(InitialDirContext.java:167)     在   test.bulk.RemoveGroupFromUser.removeGroupMembership(RemoveGroupFromUser.java:69)     at test.bulk.RemoveGroupFromUser.main(RemoveGroupFromUser.java:32)

  1. for uniqueMember -
  2.   

    javax.naming.directory.NoSuchAttributeException:[LDAP:错误代码16 - 属性uniquemember的一个或多个值不存在];   剩下的名字'cn = ........'在   com.sun.jndi.ldap.LdapCtx.mapErrorCode(LdapCtx.java:3156)at at   com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:3081)at at   com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2888)at at   com.sun.jndi.ldap.LdapCtx.c_modifyAttributes(LdapCtx.java:1475)at at   com.sun.jndi.toolkit.ctx.ComponentDirContext.p_modifyAttributes(ComponentDirContext.java:277)     在   com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(PartialCompositeDirContext.java:192)     在   com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.modifyAttributes(PartialCompositeDirContext.java:181)     在   javax.naming.directory.InitialDirContext.modifyAttributes(InitialDirContext.java:167)     在   test.bulk.RemoveGroupFromUser.removeGroupMembership(RemoveGroupFromUser.java:69)     at test.bulk.RemoveGroupFromUser.main(RemoveGroupFromUser.java:32)

1 个答案:

答案 0 :(得分:2)

  1. 确保组条目具有“uniquemember”或“member”属性。
  2. 确保传递要删除的成员的完整DN。 例如:cn = userMember,ou = xy,dc = xyx,dc = xzx
  3. 确保您已获得授权(具有管理员权限)以删除/更新目录条目。例如。仅适用于SunOne LDAP cn = Directory Manager具有创建/删除/更新条目的权限。