Активация пользователя ad LDAP

Прошу подсказать как сделать следующее: Пишу программу для добавления пользователя в AD, опущу детали, но сейчас столкнулся с проблемой, пользователь создается не активным. И вот вопрос, это или из коробки так (если создаешь пользователя не через оснастку), то он не активен, или же у меня что-то не так?!

import javax.naming.Context;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.BasicAttributes;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
import java.util.Hashtable;


// TODO: 17.12.2019 доделать связь с ad
// сделать активного пользователя
// сделать иерархию организаций
// сделать "отображаемое имя" +
// всё объеденить с формой
public class CreateNewUser {
    private String userName;
    private String firstName;
    private String lastName;
    private String password;
    private String organisationUnit;

    private LdapContext context;

//    private static String DOMAIN_NAME;
//    private static String DOMAIN_ROOT;
//    private static String DOMAIN_URL;
//    private static String ADMIN_NAME;
//    private static String ADMIN_PASS;

//    public CreateNewUser(TextField domenID, TextField ipID, TextField portID, TextField adminLoginID, TextField adminPassID) {
//        DOMAIN_NAME = domenID.getText();
//        DOMAIN_ROOT = "DC=" + DOMAIN_NAME + ",DC=local";
//        DOMAIN_URL = "ldap://" + ipID.getText() + ":" + portID.getText();
//        ADMIN_NAME = "CN=" + adminLoginID.getText() + ",CN=Users,DC=" + DOMAIN_NAME + ",DC=local";
//        ADMIN_PASS = adminPassID.getText();
//    }

    private static final String DOMAIN_NAME = "testdc";
    private static final String DOMAIN_ROOT = "DC=testdc,DC=local";
    private static final String DOMAIN_URL = "ldap://192.168.20.75:389";
    private static final String ADMIN_NAME = "CN=ad,CN=Users,DC=testdc,DC=local";
    private static final String ADMIN_PASS = "adad";

    public CreateNewUser(String userName, String firstName, String lastName, String password, String organisationUnit) {
        this.userName = userName;
        this.firstName = firstName;
        this.lastName = lastName;
        this.password = password;
        this.organisationUnit = organisationUnit;

        Hashtable<String, String> env = new Hashtable<String, String>();

        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");

        // set security credentials, note using simple cleartext authentication
        env.put(Context.SECURITY_AUTHENTICATION, "simple");
        env.put(Context.SECURITY_PRINCIPAL, ADMIN_NAME);
        env.put(Context.SECURITY_CREDENTIALS, ADMIN_PASS);

        // connect to my domain controller
        env.put(Context.PROVIDER_URL, DOMAIN_URL);

        try {
            this.context = new InitialLdapContext(env, null);
        } catch (NamingException e) {
            System.err.println("Problem creating object: ");
            e.printStackTrace();
        }

    }

    public boolean addUser() throws NamingException {

        // Create a container set of attributes
        Attributes container = new BasicAttributes();

        // Create the objectclass to add
        Attribute objClasses = new BasicAttribute("objectClass");
        objClasses.add("top");
        objClasses.add("person");
        objClasses.add("organizationalPerson");
        objClasses.add("user");

        // Assign the username, first name, and last name
        String cnValue = new StringBuffer(firstName).append(" ").append(lastName).toString();
        Attribute cn = new BasicAttribute("cn", cnValue);
        Attribute sAMAccountName = new BasicAttribute("sAMAccountName", userName);
        Attribute principalName = new BasicAttribute("userPrincipalName", userName
                + "@" + DOMAIN_NAME);
        Attribute givenName = new BasicAttribute("givenName", firstName);
        Attribute sn = new BasicAttribute("sn", lastName);
        Attribute uid = new BasicAttribute("uid", userName);

        // выводимое имя
        Attribute displayName = new BasicAttribute("displayName", lastName + " " + firstName);
        // включить пользователя 66050 (off)м --> нихера не отработало!
        Attribute userAccountControl = new BasicAttribute("userAccountControl", 66050);

        // Add password
        Attribute userPassword = new BasicAttribute("userpassword", password);

        // Add these to the container
        container.put(objClasses);
        container.put(sAMAccountName);
        container.put(principalName);
        container.put(cn);
        container.put(sn);
        container.put(givenName);
        container.put(uid);
        container.put(userPassword);

        // выводимое имя
        container.put(displayName);
        container.put(userAccountControl); // on user

        // Create the entry
        try {
            context.createSubcontext(getUserDN(cnValue, organisationUnit), container);
            return true;
        } catch (Exception e) {
            return false;
        }
    }

    private static String getUserDN(String aUsername, String aOU) {
//        return "cn=" + aUsername + ",ou=" + aOU + "," + DOMAIN_ROOT;
        return "cn=" + aUsername + ",ou=subForTest," + "ou=" + aOU + "," + DOMAIN_ROOT; //CN=Т Д И,OU=subForTest,OU=ForTest,DC=testdc,DC=local
    }

    public static void main(String[] args) throws NamingException {
        CreateNewUser createNewUser = new CreateNewUser("dtest", "Имя Отчество", "Фамилия", "12qwaszx", "ForTest");
        createNewUser.addUser();
    }
}

Ответы (0 шт):