Я пытаюсь создать внешнего пользователя на Nexus 3, используя API-интерфейсы Nexus 3. Ниже приведены подробности:
Публикация скрипта Groovy с использованием: http://localhost:8081/nexus3/service/rest/v1/script
{
"name": "d8b3baeb-628a-43cc-9a9c-9a156f399e2",
"type": "groovy",
"content": "security.addUser('q018246a', '', '', '', true, 'd8b3baeb-628a-43cc-9a9c-9a156f399ae2', ['abc_test_role Developer Role']);"
}
Запуск скрипта с использованием: http://localhost:8081/nexus3/service/rest/v1/script/d8b3baeb-628a-43cc-9a9c-9a156f399e2/run
Ответ:
{
"name": "d8b3baeb-628a-43cc-9a9c-9a156f399e2",
"result": "User{userId='q018246a', firstName='', lastName='', source='default'}"
}
Нажимая на Postman, все работает нормально, и пользователи создаются. Но через сервер приложений он дает Bad request
.
Неудобное поведение заключается в том, что он позволяет мне создать пользователя с помощью почтового скрипта почтальона с пустым first_name, last_name, email, password
, но все эти параметры требуются в пользовательском интерфейсе.
Другое дело, он показывает source
как default
, но как мне убедиться, что source
как LDAP
?
Я предполагаю, что вы пытаетесь сопоставить пользователя LDAP? Если это так, это будет работать:
import org.sonatype.nexus.security.role.RoleIdentifier;
import org.sonatype.nexus.security.user.User;
String userId = 'someuser';
String newRoleId = 'nx-admin'
User user = security.securitySystem.getUser(userId, 'LDAP')
if (user != null) {
RoleIdentifier newRole = new RoleIdentifier('default', newRoleId);
user.addRole(newRole)
security.securitySystem.setUsersRoles(user.getUserId(), 'LDAP', user.getRoles());
} else {
log.warn("No user with ID of $userId found.")
}
Это сработает для существующего пользователя LDAP. Я пытаюсь добавить нового пользователя в область LAP.