首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从中删除用户

从中删除用户
EN

Stack Overflow用户
提问于 2014-06-27 07:28:45
回答 1查看 1.3K关注 0票数 1

我有一个电子邮件分发名单"CTW DEV“。我想使用java从ActiveDirectory中删除1用户“rakeshdw”。请找到下面的代码。

这是个例外。用户不会被删除。请建议所需的更改。谢谢!

代码语言:javascript
复制
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.util.Iterator;
import java.util.Properties;
import java.util.HashSet;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.ModificationItem;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.ModificationItem;

public class DeleteFromADGroup {
    private String adGroup,dn;
    private DirContext ctx;
    private String adminName = "intranet\\patilume";

    DeleteFromADGroup(){
        try{
            this.adGroup  = "CN=CTW_DEV";
            this.dn= "OU=DistributionLists,OU=Messaging,DC=INTRANET,DC=INFOSYSINT,DC=com";
            Properties pr = new Properties();
            pr.setProperty(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
            pr.setProperty(Context.PROVIDER_URL, "ldap://intranet.infosysint.com");
            pr.setProperty(Context.SECURITY_AUTHENTICATION,"simple");  
            pr.setProperty(Context.SECURITY_CREDENTIALS, "myPassword"); //its password
            pr.setProperty(Context.SECURITY_PRINCIPAL, this.adminName);                      
            pr.setProperty(Context.REFERRAL, "ignore");
            this.ctx = new InitialDirContext(pr);
        }
        catch(Exception e){
            System.out.println("in constructor..");
        }
    }
    public static void main(String[] args) {
        DeleteFromADGroup dadg=new DeleteFromADGroup();
        dadg.deleteUser("CTW_DEV","rakeshdw");
    }
    private void deleteUser(String ADGroup, String username){
        String groupName = "CN="+ADGroup+",OU=DistributionLists,OU=Messaging,DC=INTRANET,DC=INFOSYSINT,DC=com";
        try{

            ModificationItem mods[] = new ModificationItem[1];
            mods[0]= new ModificationItem(DirContext.REMOVE_ATTRIBUTE, new BasicAttribute("member", username));

            //update the group
            ctx.modifyAttributes(groupName,mods);
            ctx.close();
        }
        catch(Exception e){
            System.out.println("Exception while removing user from DL");
        }
    }   
}

我得到的例外如下:

代码语言:javascript
复制
javax.naming.OperationNotSupportedException: [LDAP: error code 53 - 0000054F: SvcErr: DSID-031A0FC0, problem 5003 (WILL_NOT_PERFORM), data 0
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-29 17:13:30

您需要将用户的DN传递给deleteUser方法中的username属性。例如,它可能类似于cn=rakeshw,ou=people,dc=contoso,dc=com

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24446292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档