2016-12-28 19 views
1

Nexus Sonatype設定を検証しようとしています。 私はここからのGroovyスクリプトを発見:Nexus Sonatype groovy LDAPユーザーを取得

https://github.com/savoirfairelinux/ansible-nexus3-oss/tree/master/templates/groovy

を私はネクサスSonatypeにLDAPを設定することができるよ、あるいは(ないLDAPからの)新しい役割を作成します。しかし、今私はどのように特定のグループ/rôleにそれらを置くために、LDAPユーザーを取得する方法を探しています。

のGroovyスクリプトは以下の通りです: "ユーザー" タブで

import groovy.json.JsonSlurper 
import org.sonatype.nexus.security.user.UserNotFoundException 


parsed_args = new JsonSlurper().parseText(args) 

try { 
    // update an existing user 
    user = security.securitySystem.getUser(parsed_args.username) 

    /* I tried with 'setSource' but doesn't works... */ 
    user.setSource(parsed_args.source) 

    user.setFirstName(parsed_args.first_name) 
    user.setLastName(parsed_args.last_name) 
    user.setEmailAddress(parsed_args.email) 
    security.setUserRoles(parsed_args.username, parsed_args.roles) 
    security.securitySystem.updateUser(user) 
    security.securitySystem.changePassword(parsed_args.username, parsed_args.password) 
    security.setUserRoles(parsed_args.username, parsed_args.roles) 

} catch(UserNotFoundException ignored) { 
    // create the new user 
    security.addUser(parsed_args.username, parsed_args.first_name, parsed_args.last_name, parsed_args.email, true, parsed_args.password, parsed_args.roles) 
    } 

、ネクサスは、 "デフォルト" のソース(LDAPません...)を選択します。 https://github.com/sonatype/nexus-public/tree/master/components/nexus-security/src/main/java/org/sonatype/nexus/security

誰もがすでにそれをした: ...私はorg.sonatype.securityグループでは、ネクサス公開リポジトリで検索、正直なところ、私は自分のクラスを理解していませんか?

EDIT:

私はこれを試してみました:

import groovy.json.JsonSlurper 
import org.sonatype.nexus.security.user.UserNotFoundException 
import org.sonatype.nexus.security.user.UserSearchCriteria 

parsed_args = new JsonSlurper().parseText(args) 


criteria = new UserSearchCriteria(userId: 'myUser', source: 'LDAP') 
user = security.securitySystem.searchUsers(criteria) 
//user.forEach { println it } 
security.setUserRoles(user.userId, 'myRole') 
security.securitySystem.updateUser(user) 

今私のエラーは次のとおりです。

javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: org.sonatype.nexus.security.internal.SecurityApiImpl.setUserRoles() is applicable for argument types: (java.util.ArrayList, java.util.ArrayList) values: [[myUser], [myRole]]\\nPossible solutions: setUserRoles(java.lang.String, java.util.List)\"\n}", "content_type": "application/json", "date": "Fri, 30 Dec 2016 10:05:51 GMT", "failed": true, "json": {"name": "setup_user", "result": "javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: org.sonatype.nexus.security.internal.SecurityApiImpl.setUserRoles() is applicable for argument types: (java.util.ArrayList, java.util.ArrayList) values: [[myUser], [myRole]]\nPossible solutions: setUserRoles(java.lang.String, java.util.List)"}, "msg": "Status code was not [200, 204]: HTTP Error 400: Bad Request 

たぶん、私はArrayListのタイプに問題がある、私は '[]' で試してみました

+0

私たちはあなたが達成しようとしていることについて少し混乱しています。既存の作成されたLDAPユーザーを見つけて、ソースを変更する必要がありますか? – DarthHater

+0

いいえ。LDAPを設定したら、LDAPでユーザーを検索してグループに追加します。実際には、操作の前に、「デフォルト」(ユーザーを検索するソース)ではなく、「ソース」を「LDAP」に変更する必要があります。 – Isador

答えて

0

したがって、すべてのLDAPユーザーを検索するには、次のような何かを行うことができます

import org.sonatype.nexus.security.user.UserSearchCriteria 
criteria = new UserSearchCriteria(source: 'LDAP') 
users = security.securitySystem.searchUsers(criteria) 
users.forEach { println it } 

ここからは、ソースを切り替える理由はわかりませんが、これによりすべてのLDAPユーザーのリストが表示されます。

+0

あなたの答えをありがとう、私はこれを試してみます。私の組織にとっては、当初はNexusをプロビジョニングし、LDAPユーザーを特定のグループ/ルーに置く必要があります。 – Isador

+0

完全なユースケースを知りたい場合は、将来的に調整する場合に役立ちます:) – DarthHater

+0

私たちの組織では、Repository Managerソリューション(私たちはSonatype NexusとJfrog ArtifactoryのPoCを作った)を研究しています。 Nexusは多くのリポジトリタイプをサポートしているため、Nexusを選択しました。私たちの展開は全てAnabilitiesで行い、最終的な目標はNexusを自動設定し、手動設定(LDAPについて)を避けることです。私は、NexusでGroovyスクリプトを注入し、HTTPパラメータで呼び出すAnabilitiesRôleを発見しました:https://github.com/savoirfairelinux/ansible-nexus3-oss/tree/master/templates – Isador