создать пользователя с помощью Java в Active Directory облегченных служб каталогов - PullRequest
0 голосов
/ 18 сентября 2018

Кто-нибудь использует Active Directory облегченные службы каталогов? Мне нужна помощь. Я написал код, но не смог создать пользователя в Active Directory через Java.

Во-первых, я вручную создал пользователя на сервере AD LDS через окно редактирования AD. и я могу подключить его через программу ниже.

Hashtable env = new Hashtable(11);
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, LDAP_URL);
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, "CN=testuser,OU=Gulf,DC=serviceProj");
    env.put(Context.SECURITY_CREDENTIALS, "1234567");
    env.put(Context.SECURITY_PROTOCOL, "ssl");
    try {
        DirContext ctx = new InitialDirContext(env);
        }

Я создал этого тестового пользователя вручную в AD LDS. Теперь я хочу создать пользователя, используя Java, я написал код ниже, но получаю ошибку.

    Hashtable env = new Hashtable(11);
    env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
    env.put(Context.PROVIDER_URL, LDAP_URL);
    env.put(Context.SECURITY_AUTHENTICATION, "simple");
    env.put(Context.SECURITY_PRINCIPAL, "CN=Admin,OU=Gulf,DC=serviceProj");//Admin- this is a admin user through which i login to this server machine on which ad LDA is installed, this same user was selected at time of creation of instance.
    env.put(Context.SECURITY_CREDENTIALS, "1234567");
    env.put(Context.SECURITY_PROTOCOL, "ssl");
    try {
        DirContext ctx = new InitialDirContext(env);
        Attributes attrs = new BasicAttributes(true);
        Attribute oc = new BasicAttribute("objectclass");
        oc.add("top");
        oc.add("person");
        oc.add("organizationalPerson");
        oc.add("user");
        attrs.put(oc);
        attrs.put(new BasicAttribute("cn", "testuser2"));
        attrs.put(new BasicAttribute("name","test"));
        ctx.createSubcontext("CN=testuser2,OU=Gulf,DC=serviceProj", attrs);
        ctx.close();
    }       

ошибка, которую я получаю -

[9/18/18 14:16:31:193 GST] 0000024c SystemErr     R javax.naming.AuthenticationException: [LDAP: error code 49 - 8009030C: LdapErr: DSID-0C09042F, comment: AcceptSecurityContext error, data 2030, v2580

Здесь я получаю сообщение об ошибке в этой строке DirContext ctx = new InitialDirContext (env); означает, что я не могу подключиться через администратора. теперь мне нужна помощь, от которой пользователь мне нужно подключиться, чтобы создать там пользователя ?? // Администратор - это пользователь с правами администратора, через которого я захожу на сервер, на котором размещен рекламный LDA, этот же пользователь был выбран во время создания экземпляра.

в чем проблема с моим кодом. Пожалуйста, помогите мне с чем-нибудь, примером кода, viodeo что-нибудь

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

В экземплярах AD LDS, работающих в Windows Server 2008+, где действуют ограничения политики локальных или доменных паролей, учетная запись пользователя AD LDS по умолчанию отключена.

Прежде чем вы сможете активировать учетную запись пользователя, вы должны установить для нее пароль, соответствующий действующим ограничениям политики паролей.

-jim

0 голосов
/ 18 сентября 2018

Есть две возможные причины этой ошибки, о которых я могу подумать:

  1. Вы пытаетесь создать пользователя с cn=testuser2, но в DN вы вводите cn=admin, что противоречиво
  2. Ваш вошедший в систему пользователь testuser не имеет прав на создание в OU=Gulf,DC=serviceProj контейнере

Попробуйте создать пользователя с

ctx.createSubcontext("CN=testuser2,OU=Gulf,DC=serviceProj", attrs);

, и есличто по-прежнему не удается, войдите в систему с правами администратора (это пример):

env.put(Context.SECURITY_PRINCIPAL, "CN=Administrator,OU=Gulf,DC=serviceProj");

РЕДАКТИРОВАТЬ

Таким образом, связывание (вход в систему) с использованием InitialDirContext() не удается,Действительно ли ваш Admin пользователь существует в этом контексте:

env.put(Context.SECURITY_PRINCIPAL, "CN=Admin,OU=Gulf,DC=serviceProj");

На вашем снимке экрана я не вижу этого пользователя в списке, поэтому думаю, что его там нет.Вы можете войти в AD LDS через LDAP только с учетными записями пользователей, которые фактически существуют в экземпляре LDS, но не с учетной записью AD.

Если вы попытаетесь связать с CN=testuser,OU=Gulf,DC=serviceProj с правильным паролем, то вызов InitialDirContext() должен быть успешным.Если вы добавите эту учетную запись в роль «Администраторы» в LDS, вы также сможете создать нового пользователя.

...