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のタイプに問題がある、私は '[]' で試してみました
私たちはあなたが達成しようとしていることについて少し混乱しています。既存の作成されたLDAPユーザーを見つけて、ソースを変更する必要がありますか? – DarthHater
いいえ。LDAPを設定したら、LDAPでユーザーを検索してグループに追加します。実際には、操作の前に、「デフォルト」(ユーザーを検索するソース)ではなく、「ソース」を「LDAP」に変更する必要があります。 – Isador