#java #cucumber #redhat #bdd
#java #огурец #redhat #bdd
Вопрос:
Я пытаюсь создать пользователя в Active Directory с помощью spring boot, пользователь создается, но я не могу получить доступ к этому созданному пользователю. Код создания пользователя выглядит следующим образом:
protected void createUsersAD(String userName, String orgName){
Name dn = buildUserDnn(userName);
DirContextAdapter context = new DirContextAdapter(dn);
context.setAttributeValues("objectclass",
new String[] { "top", "person", "organizationalPerson", "inetOrgPerson" });
context.setAttributeValue("cn", userName);
if (orgName != "")
context.setAttributeValue("ou", orgName);
context.setAttributeValue("givenName",userName);
context.setAttributeValue("displayName", userName);
context.setAttributeValue("name", userName);
context.setAttributeValue("userPrincipalName",userName "@" config.getDomainName());
String newQuotedPassword = """ password """;
byte[] newUnicodePassword = newQuotedPassword.getBytes("UTF-16LE");
context.setAttributeValue("unicodePwd",newUnicodePassword);
//context.setAttributeValue("userAccountControl", Integer.toString(512));
//context.setAttributeValue("sAMAccountName", userName);
ldapTemplate.bind(context);
LOGGER.debug("User created successfully INTO AD.");
}
С помощью того же кода я могу создать пользователя в LDAP и получить доступ к этому пользователю.
Когда я сравнивал пользователя, я заметил, что userAccessControl устанавливается как 546, что означает (значение 546 (десятичное) равно 0x222 hex и означает: обычная учетная запись, отключена, пароль не требуется.)
Я попытался установить значение userAccountControl, но получил сообщение об ошибке:
ИСКЛЮЧЕНИЕ ======org.springframework.ldap.Исключение OperationNotSupportedException: [LDAP: код ошибки 53 — 0000052D: SvcErr: DSID-031A1236, проблема 5003 (WILL_NOT_PERFORM), данных 0
Получение ошибки:
2020-10-05 19:10:26.167 DEBUG 12304 --- [o-auto-1-exec-4] c.a.c.security.JwtAuthenticationFilter : JwtAuthenticationFilter attemptAuthentication authenticationToken com.atos.config.security.SelfServiceUserPasswordAuthToken@e3ac519c: Principal: cucumber_customer_admin_multi; Credentials: [PROTECTED]; Authenticated: false; Details: null; Not granted any authorities
2020-10-05 19:10:26.167 DEBUG 12304 --- [o-auto-1-exec-4] c.a.c.security.JwtAuthenticationFilter : JwtAuthenticationFilter authenticationManager used class com.atos.config.security.SelfServiceAuthenticationManager
2020-10-05 19:10:26.168 INFO 12304 --- [o-auto-1-exec-4] c.a.c.s.SelfServiceAuthenticationManager : authenticate called
2020-10-05 19:10:26.169 DEBUG 12304 --- [o-auto-1-exec-4] ctiveDirectoryLdapAuthenticationProvider : Processing authentication request for user: cucumber_customer_admin_multi
2020-10-05 19:10:26.450 DEBUG 12304 --- [o-auto-1-exec-4] ctiveDirectoryLdapAuthenticationProvider : Authentication for cucumber_customer_admin_multi@amosonline.io failed:javax.naming.AuthenticationException: [LDAP: error code 49 - 80090308: LdapErr: DSID-0C090436, comment: AcceptSecurityContext error, data 52e, v4563
Комментарии:
1. Пожалуйста, предоставьте обновления по этой проблеме..
Ответ №1:
По моему (короткому) опыту работы с Active Directory через LDAP код «DSID-031A1236» означает, что существует проблема с вашей конфигурацией LDAP (LDAP через SSL / TLS). Для изменения паролей AD через LDAP требуются LDAP.
Сообщение об ошибке LDAP бесполезно («DSID-031A1236» ???), может сбивать с толку («проблема 5003» относится к ограничениям политики паролей, что не так) и даже вызывающе («WILL_NOT_PERFORM», НЕТ, НЕТ, НЕТ!), Но пару раз, когда явстречал эту конкретную ошибку, решение всегда было связано с SSL: недействительный сертификат, балансировщик сетевой нагрузки, «выдающий» себя за SSL, но перенаправляющий на обычные порты LDAP и т. Д.
Если вам нужно внести изменения в сервер AD, есть некоторая документация, которая может быть полезна на https://social.technet.microsoft.com/wiki/contents/articles/2980.ldap-over-ssl-ldaps-certificate.aspx