Добавление атрибута unicodePwd в новую учетную запись Active-Directory с соединителем Mulesoft LDAP.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Добавление атрибута unicodePwd в новую учетную запись Active-Directory с соединителем Mulesoft LDAP.

Сообщение Anonymous »

Я хочу создать учетную запись в Active Directory (AD) с помощью соединителя LDAP Mulesoft. Я могу сделать это без проблем, но это работает ТОЛЬКО тогда, когда я не отправляю пароль пользователя (unicodePwd). Таким образом, проблема заключается в том, как использовать правильный формат (данные, байты или что-то еще) в Mulesoft Dataweave для unicodePwd, чтобы создать пользователя в AD с паролем по умолчанию.
Когда я делаю это в простой Java 17, эта часть кода выполняет всю работу.

Код: Выделить всё

  public static void createUser(DirContext ctx) throws Exception {

String userCn = "Piet Jansen";
String userSam = "piet";
String userDn = "CN=" + userCn + ",OU=_TEMP_TEST_MuleSoft,DC=corp,DC=example,DC=lan";
String password = "Welcome123!Testsecret";

Attributes attrs = new BasicAttributes(true);

Attribute objClass = new BasicAttribute("objectClass");
objClass.add("top");
objClass.add("person");
objClass.add("organizationalPerson");
objClass.add("user");
attrs.put(objClass);

attrs.put("cn", userCn);
attrs.put("sAMAccountName", userSam);
attrs.put("userPrincipalName", "piet.jansen@example.nl");
attrs.put("displayName", userCn);
attrs.put("givenName", userSam);
attrs.put("sn", "Jansen");

// 🔐 simulation of the unicodePwd attribute

String quotedPwd = "\"" + password + "\"";
byte[] pwdBytes = quotedPwd.getBytes(StandardCharsets.UTF_16LE);
attrs.put("unicodePwd", pwdBytes);

attrs.put("userAccountControl", "544"); // NORMAL_ACCOUNT + PASSWD_NOTREQD

ctx.createSubcontext(userDn, attrs);

System.out.println("User created: " + userDn);
}
Приведенный выше код Java работает при создании правильного контекста ldap (ctx), но проблема не в этом. Но это показывает, что задание можно выполнить и контроллер домена с частью SSL настроен правильно. А в Java доверенное хранилище для SSL настроено правильно.
Но я хочу использовать для этого соединитель Mulesoft LDAP(S).
Когда моя полезная нагрузка dataweave для соединителя Mulesoft LDAP такая, она работает, учетная запись создается в AD, но без пароля по умолчанию, как вы видите.

Код: Выделить всё

{
"cn": "Piet Jansen",
"sAMAccountName": "Piet",
"userPrincipalName": "piet.jansen@example.nl",
"objectClass": ["top", "person", "organizationalPerson", "user"],
"dn": "CN=Piet Jansen,OU=_TEMP_TEST_MuleSoft,DC=corp,DC=example,DC=lan",
"userAccountControl": "544", // NORMAL_ACCOUNT + PASSWD_NOTREQD
"givenName": "Piet",
"sn":"Jansen",
"displayName": "Piet Jansen"
}
Но когда я хочу добавить атрибут unicodePwd в полезную нагрузку dataweave для соединителя Mulesoft LDAP, я получаю ошибку LDAP.

Код: Выделить всё

{
"cn": "Piet Jansen",
"sAMAccountName": "Piet",
"userPrincipalName": "piet.jansen@example.nl",
"objectClass": ["top", "person", "organizationalPerson", "user"],
"dn": "CN=Piet Jansen,OU=_TEMP_TEST_MuleSoft,DC=corp,DC=example,DC=lan",
"unicodePwd": "Welcome123!Testsecret",
"userAccountControl": "544", // NORMAL_ACCOUNT + PASSWD_NOTREQD
"givenName": "Piet",
"sn":"Jansen",
"displayName": "Piet Jansen"
}
После этого я получаю такую ​​ошибку LDAP:

Код: Выделить всё

"OPERATION_NOT_SUPPORTED: [LDAP: error code 53 - 0000001F: SvcErr: DSID-031A126C, problem 5003 (WILL_NOT_PERFORM), data 0
Я попробовал несколько конфигураций dataweave для атрибута unicodePWD, например:

Код: Выделить всё

//password between double quotes as a String
"unicodePwd": '\"' ++ "Welcome123!Testsecret" ++ '\"'
//some converting to get a binary
"unicodePWD": toBase64(toBinary('\"' ++ "Welcome123!Testsecret" ++ '\"', 'UTF-16LE'))
//some other way with converting
"unicodePwd": '\"' ++ "Welcome123!Testsecret" ++ '\"' as Binary {encoding: "UTF_16LE"}

// I tried a call to a Java function also:

//MuleLdapUtil custom class look like this:

package nl.example.ldap.utils;

public class MuleLdapUtil {

public static byte[] getPW() {
String quotedPwd = "\"" + "Welcome123!Testsecret" + "\"";
byte[] pwdBytes = quotedPwd.getBytes(StandardCharsets.UTF_16LE);

return pwdBytes;
}

}
//then import the class in dataweave
import java!nl::example::ldap::utils::MuleLdapUtil
//and use the attribute in the payload.

uniCodePwd: (MuleLdapUtil::getPW())

Ни один из них не работает, поэтому у меня вопрос: каков правильный формат атрибута unicodePwd в полезных данных для соединителя ldap?

Подробнее здесь: https://stackoverflow.com/questions/798 ... h-mulesoft
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»