使用Nexus 3 API更改管理员密码

时间:2016-08-14 00:25:54

标签: sonatype nexus3

我想使用Nexus 3 api更改管理默认密码以及使用groovy的电子邮件地址。但我不明白如何使用groovy api设置密码。有人可以举例说明如何做到这一点吗?

3 个答案:

答案 0 :(得分:2)

摘要

您可以使用REST API更新用户信息和更改其密码。这包括管理员用户。

Nexus 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

Nexus REST API:更改密码

您将要使用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实例上可用。您可以通过以下方式在自己运行的Nexus实例上查看此API:

  • 菜单:系统配置>系统> API

enter image description here

旧方法:在首次入职时更改密码

这仅在初始入职期间起作用。您应该绝对不要使用此方法。只是为了完整起见就记录下来。

此部分用于在入职期间更改初始密码。

引用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>'

参考: https://github.com/sonatype/nexus-public/blob/9b177ab50bd7f8470b08247b146da459170ecc8f/plugins/nexus-onboarding-plugin/src/main/resources/static/rapture/NX/onboarding/step/ChangeAdminPasswordStep.js#L50

答案 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')

密码现已重置