Nexus3 使用 API 配置 LDAP
Nexus3 Configure LDAP with API
我目前正在尝试编写一个脚本来在我的 Nexus 3 实例上配置 LDAP。我查看了 this post,但我 运行 遇到了一些错误,我认为这只是我没有很好地理解 Groovy。
这是我试过的方法。
import org.sonatype.nexus.ldap.persist.*
import org.sonatype.nexus.ldap.persist.entity.*
import groovy.json.JsonSlurper
def ldap = new JsonSlurper().parseText(args)
def manager = container.lookup(LdapConfigurationManager.class.name)
manager.addLdapServerConfiguration(
new LdapConfiguration(
name: ldap.name,
connection: new Connection(
host: new Connection.Host(Connection.Protocol.ldap, ldap.host, ldap.port),
maxIncidentsCount: 3,
connectionRetryDelay: 300,
connectionTimeout: 15,
searchBase: 'dc=example,dc=com',
authScheme: 'simple',
systemPassword: 'systemPassword',
systemUsername: 'systemUsername'
),
mapping: new Mapping(
ldapGroupsAsRoles: true,
emailAddressAttribute: 'mail',
userIdAttribute: 'sAMAccountName',
userMemberOfAttribute: 'memberOf',
userObjectClass: 'user',
userPasswordAttribute: 'userPassword',
userRealNameAttribute: 'cn',
userBaseDn: '(memberof:1.2.840.113556.1.4.1941:=cn=Devs,ou=someOU,ou=anotherOU,dc=example,dc=com'
)
)
)
当我使用复杂脚本示例中提供的 provision.sh 脚本时,我得到:
"name" : "ldapConfig",
"result" : "org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:\n
Script8.groovy: 10: unable to resolve class ldapConfiguration \n
@ line 10, column 3.\n new ldapConfiguration(\n^\n\n1 error\n"
我真的很困扰它无法解决 class...
现在,我不确定如何为 args 提供 JSON 对象。相反,我尝试将 JSON 块直接放入 JsonSlurper().parseText() 中,如下所示:
ldap = new JsonSlurper().parseText('{"host: localhost", "port: 389"}')
这会产生与上述相同的错误。
这是 provision.sh 中调用 addUpdateScript.groovy 脚本的片段。
#!/bin/bash
# A simple example script that publishes a number of scripts to the Nexus Repository Manager
# and executes them.
# fail if anything errors
set -e
# fail if a function call is missing an argument
set -u
username=admin
password=admin123
# add the context if you are not using the root context
host=http://localhost:8081
# add a script to the repository manager and run it
function addAndRunScript {
name=
file=
# using grape config that points to local Maven repo and Central Repository , default grape config fails on some downloads although artifacts are in Central
# change the grapeConfig file to point to your repository manager, if you are already running one in your organization
groovy -Dgroovy.grape.report.downloads=true -Dgrape.config=grapeConfig.xml addUpdatescript.groovy -u "$username" -p "$password" -n "$name" -f "$file" -h "$host"
printf "\nPublished $file as $name\n\n"
curl -v -X POST -u $username:$password --header "Content-Type: text/plain" "$host/service/siesta/rest/v1/script/$name/run"
curl -v -X GET -u $username:$password "$host/service/siesta/rest/v1/script/$name"
printf "\nSuccessfully executed $name script\n\n\n"
}
printf "Provisioning Integration API Scripts Starting \n\n"
printf "Publishing and executing on $host\n"
addAndRunScript ldapConfig ldapConfig.groovy
我用错了 class 名字吗? Ldap 配置。当我将它加载到 IntelliJ 中时,我发现了 ldapConfig 但它也不起作用。不确定如何深入研究 javadoc 以从库中获取更多详细信息。
我相信你有
new ldapConfiguration(
你需要的地方
new LdapConfiguration(
在脚本的第 10 行
我目前正在尝试编写一个脚本来在我的 Nexus 3 实例上配置 LDAP。我查看了 this post,但我 运行 遇到了一些错误,我认为这只是我没有很好地理解 Groovy。
这是我试过的方法。
import org.sonatype.nexus.ldap.persist.*
import org.sonatype.nexus.ldap.persist.entity.*
import groovy.json.JsonSlurper
def ldap = new JsonSlurper().parseText(args)
def manager = container.lookup(LdapConfigurationManager.class.name)
manager.addLdapServerConfiguration(
new LdapConfiguration(
name: ldap.name,
connection: new Connection(
host: new Connection.Host(Connection.Protocol.ldap, ldap.host, ldap.port),
maxIncidentsCount: 3,
connectionRetryDelay: 300,
connectionTimeout: 15,
searchBase: 'dc=example,dc=com',
authScheme: 'simple',
systemPassword: 'systemPassword',
systemUsername: 'systemUsername'
),
mapping: new Mapping(
ldapGroupsAsRoles: true,
emailAddressAttribute: 'mail',
userIdAttribute: 'sAMAccountName',
userMemberOfAttribute: 'memberOf',
userObjectClass: 'user',
userPasswordAttribute: 'userPassword',
userRealNameAttribute: 'cn',
userBaseDn: '(memberof:1.2.840.113556.1.4.1941:=cn=Devs,ou=someOU,ou=anotherOU,dc=example,dc=com'
)
)
)
当我使用复杂脚本示例中提供的 provision.sh 脚本时,我得到:
"name" : "ldapConfig",
"result" : "org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:\n
Script8.groovy: 10: unable to resolve class ldapConfiguration \n
@ line 10, column 3.\n new ldapConfiguration(\n^\n\n1 error\n"
我真的很困扰它无法解决 class... 现在,我不确定如何为 args 提供 JSON 对象。相反,我尝试将 JSON 块直接放入 JsonSlurper().parseText() 中,如下所示:
ldap = new JsonSlurper().parseText('{"host: localhost", "port: 389"}')
这会产生与上述相同的错误。
这是 provision.sh 中调用 addUpdateScript.groovy 脚本的片段。
#!/bin/bash
# A simple example script that publishes a number of scripts to the Nexus Repository Manager
# and executes them.
# fail if anything errors
set -e
# fail if a function call is missing an argument
set -u
username=admin
password=admin123
# add the context if you are not using the root context
host=http://localhost:8081
# add a script to the repository manager and run it
function addAndRunScript {
name=
file=
# using grape config that points to local Maven repo and Central Repository , default grape config fails on some downloads although artifacts are in Central
# change the grapeConfig file to point to your repository manager, if you are already running one in your organization
groovy -Dgroovy.grape.report.downloads=true -Dgrape.config=grapeConfig.xml addUpdatescript.groovy -u "$username" -p "$password" -n "$name" -f "$file" -h "$host"
printf "\nPublished $file as $name\n\n"
curl -v -X POST -u $username:$password --header "Content-Type: text/plain" "$host/service/siesta/rest/v1/script/$name/run"
curl -v -X GET -u $username:$password "$host/service/siesta/rest/v1/script/$name"
printf "\nSuccessfully executed $name script\n\n\n"
}
printf "Provisioning Integration API Scripts Starting \n\n"
printf "Publishing and executing on $host\n"
addAndRunScript ldapConfig ldapConfig.groovy
我用错了 class 名字吗? Ldap 配置。当我将它加载到 IntelliJ 中时,我发现了 ldapConfig 但它也不起作用。不确定如何深入研究 javadoc 以从库中获取更多详细信息。
我相信你有
new ldapConfiguration(
你需要的地方
new LdapConfiguration(
在脚本的第 10 行