2016-10-06 24 views
1

我與Nexus3 Groovy腳本來提供工作的外部角色映射引導我Nexus3 - OSS實例。在查看the complex scripting examples and the shell scripting examples以及the sonatype books時,我沒有看到有關安全方法及其參數的任何明確文檔。Nexus3 Groovy腳本到/添加角色使用LDAP中

我的主要問題是如何做我的LDAP組映射到使用Groovy一臺Nexus角色?

security.addRole('admin.role', 'Admin', 'Some Description', 'nx-admin', 'LDAPGroupName') 

當推送到Nexus並運行時,我得到了一個400。我很感激任何幫助,我可以在這裏。

+0

您是否找到該徽章的解決方案?如果有,請分享 – Georgi

回答

0

下面的腳本添加了從LDAP角色到連接角色的映射。

import groovy.json.JsonOutput 
import groovy.json.JsonSlurper 
import org.sonatype.nexus.security.SecuritySystem 

def request = new JsonSlurper().parseText(args) 
String ldap = request.ldap 
String name = request.name ?: request.ldap 
String nexus = request.nexus 
assert ldap != null && nexus != null 


def role = security.addRole(ldap, name, "Mapping for LDAP "+ldap, [], [nexus]); 

JsonOutput.prettyPrint(JsonOutput.toJson(role)) 

參數 'LDAP' 是LDAP角色名稱和 '關係' 是承上啓下的角色名稱(如 'NX-管理')。注意添加映射後,將出現兩個具有相同ID的角色(一個用於LDAP源,另一個用於默認)。 Nexus顯然是通過id關聯它們的。下面的腳本列出了所有角色(LDAP和默認值)。您可能需要將用戶LDAP用戶名傳遞給此腳本,以便LDAP角色出現,因爲如果LDAP未使用一段時間,LDAP將被停用,在這種情況下,腳本將只顯示連線角色。

import groovy.json.JsonOutput 
import groovy.json.JsonSlurper 
import org.sonatype.nexus.security.SecuritySystem 

SecuritySystem securitySystem = container.lookup(SecuritySystem.class.name) 
if(args != null && args.length() > 0) { 
    def request = new JsonSlurper().parseText(args) 
    if(request.user != null && request.user.length() > 0) { 
     securitySystem.getUser(request.user) 
    } 
} 

JsonOutput.prettyPrint(JsonOutput.toJson(securitySystem.listRoles()))