Nexus 3 |如何使用Nexus 3 API创建(外部)用户?

时间:2019-05-28 07:46:13

标签: nexus nexus3

我正在尝试使用nexus 3 API在Nexus 3上创建外部用户。以下是详细信息: 使用http://localhost:8081/nexus3/service/rest/v1/script

发布Groovy脚本
{
    "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的邮递员发布脚本来创建用户,但是UI上需要所有这些参数。

另一件事,它显示sourcedefault,但是如何确保sourceLDAP

1 个答案:

答案 0 :(得分:1)

我假设您正在尝试映射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.")
}