我想使用Nexus 3 api更改管理默认密码以及使用groovy的电子邮件地址。但我不明白如何使用groovy api设置密码。有人可以举例说明如何做到这一点吗?
答案 0 :(得分:2)
您可以使用REST API更新用户信息和更改其密码。这包括管理员用户。
我的实例中默认的admin user-data.json如下:
{
"userId": "admin",
"firstName": "Administrator",
"lastName": "User",
"emailAddress": "admin@example.org",
"source": "default",
"status": "active",
"readOnly": false,
"roles": [
"nx-admin"
],
"externalRoles": []
}
将user-data.json
更新为所需的值,并将curl
与REST API一起使用。
NX_PASSWORD="admin user password"
curl -ifu admin:"${NX_PASSWORD}" \
-XPUT -H 'Content-Type: application/json' \
--data "$(< user-data.json)" \
<nexus base URL>/service/rest/v1/security/users/admin
您将要使用Security Management API。
请参见Nexus 3 backend source code。
OLD_PASSWORD="nexus admin password"
NEW_PASSWORD="your new password"
curl -ifu admin:"${OLD_PASSWORD}" \
-XPUT -H 'Content-Type: text/plain' \
--data "${NEW_PASSWORD}" \
<nexus base URL>/service/rest/v1/security/users/admin/change-password
此文档仅在运行中的Nexus实例上可用。您可以通过以下方式在自己运行的Nexus实例上查看此API:
这仅在初始入职期间起作用。您应该绝对不要使用此方法。只是为了完整起见就记录下来。
此部分用于在入职期间更改初始密码。
引用Nexus源
您可以通过一个admin
命令来更改curl
用户密码。
OLD_PASSWORD="initial nexus password"
NEW_PASSWORD="somepass"
curl -ifu admin:"${OLD_PASSWORD}" \
-XPUT -H 'Content-Type: text/plain' \
--data "${NEW_PASSWORD}" \
<nexus base URL>/service/rest/internal/ui/onboarding/change-admin-password
答案 1 :(得分:0)
Sonatype Nexus拥有内部change-admin-password内部api来更新管理员密码,但使用起来并不直接,它使用的是通过/ service / rapture / session端点创建的会话ID。
curl -v 'https://<hostname>/service/rapture/session' --data 'username=<base64 username>&password=<base64 password>'
curl -v -X PUT 'https://<hostname>/service/rest/internal/ui/onboarding/change-admin-password' -H 'cookie: <NXSESSIONID form the above response>' --data '<plain text password>'
答案 2 :(得分:0)
安装nexus3 cli:
SyntaxError: invalid regexp group, line 6 (Error code: -991)
获取第一个初始密码(假设Nexus在docker中运行):
pip install nexus3-cli
设置环境变量:
docker exec nexus cat /nexus-data/admin.password
通过更新/nexus-data/etc/nexus.properties并添加以下行来允许远程脚本执行:
export NEXUS3_PASSWORD=<PASSWORD FROM PREVIOUS STEP>
export NEXUS3_USERNAME=<USERNAME>
export NEXUS3_URL=<URL>
重新启动nexus服务以重新加载上一次更改:
nexus.scripts.allowCreation=true
创建包含以下内容的文件docker container restart <nexus>
(感谢@Dennis Hoer):
reset-password.groovy
从命令行创建脚本并运行该脚本以重置admin的密码:
def user = security.securitySystem.getUser('admin')
user.setEmailAddress('admin@mycompany.com')
security.securitySystem.updateUser(user)
security.securitySystem.changePassword('admin','admin456')
密码现已重置