【问题标题】:Nexus REST API to map LDAP user to existing RolesNexus REST API 将 LDAP 用户映射到现有角色
【发布时间】:2019-05-07 04:44:35
【问题描述】:

是否有可能使用 Groovy 脚本将 LDAP 用户映射到现有的关系角色?我创建了一个 Groovy 脚本,它将检查我在 LDAP 中的员工编号并将关联角色映射到我的用户 ID。

import org.sonatype.nexus.security.role.RoleIdentifier
import org.sonatype.nexus.security.user.User
import org.sonatype.nexus.security.user.UserManager
import org.sonatype.nexus.security.role.NoSuchRoleException
import groovy.json.JsonOutput 
import groovy.json.JsonSlurper 
import groovy.json.JsonBuilder
import java.util.ArrayList
import java.util.HashSet
import java.util.List
import java.util.Set


def id = "NA10009"
def roles = 'dot-maven'
def json = new JsonBuilder()
def root= json id: id, roles: roles 
def roles1 = json.toString()
def role = new JsonSlurper().parseText(roles1)
 log.info("The Role in JSON  : $roles1")

authManager = security.getSecuritySystem().getAuthorizationManager(UserManager.DEFAULT_SOURCE)
 log.info("The authManager  : $authManager")
roles = (role.roles == null ? new HashSet() :role.roles.toSet())
try {
    User user = security.securitySystem.getUser(id, 'LDAP') 
    def existingRole = authManager.getRole(role.roles)
    log.info("The Role  : $existingRole")

    if (user != null) {
        List test = []
        test << existingRole.roleId
         log.info("The Role list  : $test")
        security.setUsersRoles(id,  test)
        log.info("Role of $roles  has been added to $id")
    } else {
        log.warn("$id not found.")
    }

} catch (Exception e) {
    log.error(e.toString())
}

输出是

    org.sonatype.nexus.internal.script.ScriptTask - groovy.lang.MissingMethodException: No signature of method: org.sonatype.nexus.security.internal.DefaultSecuritySystem$$EnhancerByGuice$$20b4f8d.setUsersRoles() is applicable for argument types: (java.lang.String, java.lang.String, java.util.ArrayList) values: [NA10009, [dot-maven]]
Possible solutions: setUsersRoles(java.lang.String, java.lang.String, java.util.Set)

我为角色创建了一个 json,并尝试更新 LDAP 用户。但它会引发上述错误。

【问题讨论】:

    标签: java groovy sonatype nexus3


    【解决方案1】:

    为 LDAP 用户添加 Nexus 角色,

    import org.sonatype.nexus.security.role.RoleIdentifier;
    import org.sonatype.nexus.security.user.User;
    import org.sonatype.nexus.security.user.UserManager;
    
    String userId = 'NA10009';
    String newRoleId = 'dot-maven'
    String realm = 'LDAP'
    String role_realm = 'default'
    
    User user = security.securitySystem.getUser(userId, realm)
    authManager = security.getSecuritySystem().getAuthorizationManager(UserManager.DEFAULT_SOURCE)
    def existingRole = authManager.getRole(newRoleId)
    if(user != null) {
        RoleIdentifier newRole = new RoleIdentifier(role_realm, existingRole.roleId);
        user.addRole(newRole)
        security.securitySystem.setUsersRoles(user.getUserId(), realm, user.getRoles());
    } else {
        log.warn("No user with ID of $userId found.")
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-25
      • 2017-07-27
      • 2015-03-04
      • 1970-01-01
      • 2020-03-16
      • 1970-01-01
      • 2016-11-17
      • 2016-05-16
      相关资源
      最近更新 更多