2016-10-06 3 views
1

私はNexus3-OSSインスタンスのプロビジョニング/ブートストラップにNexus3 groovyスクリプトを使用しています。 the complex scripting examples and the shell scripting examplesthe sonatype booksを見ているうちに、私はセキュリティメソッドとそのパラメータに関する明確な文書を見ていない。Nexus3 LDAPからの外部ロールマッピングを使用してロールを追加するためのGroovyスクリプト

私の主な質問は、groovyを使用してLDAPグループをNexusロールにマッピングする方法です。

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

Nexusにプッシュして実行すると、これで400が得られます。私はここで得ることができるすべての助けに感謝します。

+0

あなたはその問題を解決しましたか?もしそうなら共有してください – Georgi

答えて

0

以下のスクリプトは、LDAPの役割からNexusの役割へのマッピングを追加します。

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-adminの' のような)ネクサスロール名です。マッピングを追加すると、同じIDを持つ2つのロールが表示されます(LDAPソースの場合は1つ、デフォルトの場合はその他)。ネクサスは明らかにそれらをIDで相関付けます。以下のスクリプトは、すべてのロール(LDAPとデフォルトのロール)をリストしています。 LDAPロールが表示されるようにするには、このスクリプトにユーザーLDAPユーザー名を渡す必要があります。LDAPが使用されていない場合は非アクティブ化されるため、スクリプトにはNexusロールのみが表示されるためです。

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())) 
関連する問題