Nexus 3 API を使用して、groovy を使用して管理者のデフォルト パスワードと電子メール アドレスを変更したいと考えています。しかし、groovy api を使用してパスワードを設定する方法がわかりません。誰かがこれを行う方法の例を提供できますか?
4 に答える
概要
REST API を使用して、ユーザー情報の更新とパスワードの変更の両方を行うことができます。これには管理者ユーザーが含まれます。
Nexus REST API: ユーザー情報の更新
私のインスタンスのデフォルトの管理者 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 バックエンド ソース コードをご覧ください。
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 インスタンスでのみ利用できます。次の URL にアクセスして、実行中の自分の Nexus インスタンスでこの API を表示できます。
- メニュー:システム構成 > システム > API。
古い方法: 最初のオンボーディング中にパスワードを変更する
これは、最初のオンボーディング中にのみ機能します。このメソッドは絶対に使用しないでください。完全を期すために文書化するだけです。
このセクションは、オンボーディング中に初期パスワードを変更するためのものです。
Nexus ソースの参照
1 つのコマンド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
もともと changePassword は非推奨だと思っていましたが、間違っていました。管理者の電子メール アドレスを更新し、パスワードを変更する例を次に示します。
def user = security.securitySystem.getUser('admin')
user.setEmailAddress('admin@mycompany.com')
security.securitySystem.updateUser(user)
security.securitySystem.changePassword('admin','admin456')
nexus3 cli をインストールします。
pip install nexus3-cli
最初の初期パスワードを取得します (Nexus が docker で実行されていると仮定します):
docker exec nexus cat /nexus-data/admin.password
環境変数を設定します。
export NEXUS3_PASSWORD=<PASSWORD FROM PREVIOUS STEP>
export NEXUS3_USERNAME=<USERNAME>
export NEXUS3_URL=<URL>
/nexus-data/etc/nexus.properties を更新し、以下の行を追加して、リモート スクリプトの実行を許可します。
nexus.scripts.allowCreation=true
nexus サービスを再起動して、最後の変更をリロードします。
docker container restart <nexus>
次の内容のファイルreset-password.groovy
を作成します (@Dennis Hoer に感謝) :
def user = security.securitySystem.getUser('admin')
user.setEmailAddress('admin@mycompany.com')
security.securitySystem.updateUser(user)
security.securitySystem.changePassword('admin','admin456')
コマンド ラインからスクリプトを作成し、スクリプトを実行して admin のパスワードをリセットします。
nexus3 script create --script-type groovy passreset reset-password.groovy
nexus3 script run passreset
パスワードがリセットされました