web-dev-qa-db-ja.com

REST APIなしでneo4jクラスターのユーザーとパスワードを設定する方法

私が使用しているバージョンはneo4j-enterprise-2.2.0-M02です

私の質問は:REST APIの代わりに、バックエンドまたはブラウザでユーザーを構成する(新しいユーザーを追加する、パスワードを変更するなど) ?私がDBAであると想像してください。REST APIでこれを行うのはあまり便利ではありません。

どんな助けも大歓迎です!

33
zxz

APIの代わりにブラウザを使用できます。 http://localhost:7474(またはWebコンソールがバインドされているIP)に移動すると、パスワードを変更するように求められます。認証されたら、:server change-passwordコマンドを使用してパスワードを再度変更します。

システム内に複数のユーザーアカウントを作成することはまだできません。

コマンド:help serverを使用して、使用可能な認証コマンドを表示できます。

50
subvertallchris

REST APIを引き続き使用しますが、Webブラウザにアクセスできない人(AWSインスタンスなど)にはcURLオプションをスローします。

$ curl -H "Content-Type: application/json" -X POST -d '{"password":"WHATEVER THE PASSWORD IS"}' -u neo4j:neo4j http://localhost:7474/user/neo4j/password
43
Brent Barbata

別のオプションは、authファイルを直接変更し、neoを再起動することです。これを行うと、ユーザー名を変更することさえできます!

走る

find/-name dbms

私にとって、これは1つのヒットを与えました:

/ var/lib/neo4j/data/dbms/auth

このコードをbuild_auth_string.shとして保存します。

#!/bin/bash

DEFAULT_IFS="$IFS"
SALT_LEN=32

# either read from stdin or use the argument
if [ -z "$1" ]; then
  read INPUT
else
  INPUT="$1"
fi

if [ -z "$INPUT" ]; then
 echo "correct format <uname:pass>"
 exit
fi

IFS=':'
read -a UNAME_PASS <<< "$INPUT"

UNAME="${UNAME_PASS[0]}"
PASS="${UNAME_PASS[1]}"

# representing the password in hex format like \xAB\x0C etc
# HEX_PASS=$(echo -n $PASS | xxd -p | awk '{print toupper($1);}' | sed -r 's/(.{2})/\\x\1/g')
HEX_PASS=$(echo -n $PASS | hexdump -v -e '"\\\x" 1/1 "%02X"')
# echo $HEX_PASS


# create the salt and store it in hex format
SALT=$(cat /dev/urandom | tr -dc 'a-f0-9' | fold -w $SALT_LEN | head -n 1)
# SALT="28FD26AD92D6D2D8820E969F3F3732B4"
HEX_SALT=$(echo -n $SALT | sed -r 's/(.{2})/\\x\1/g')


# calculate the sha256 sum of the salt and password value
# need to split the output because the output ends with a hyphen
IFS=' '
read -a PASSWORD_HASH_ARRAY <<< $(printf $HEX_SALT$HEX_PASS | sha256sum)
PASSWORD_HASH="${PASSWORD_HASH_ARRAY[0]}"

# echo "$UNAME;$PASS;$SALT"
# echo "$PASSWORD_HASH"

# and print out the auth string
COMBINED=$(echo -n "$PASSWORD_HASH,$SALT" | awk '{print toupper($1);}')
echo "$UNAME:SHA-256,$COMBINED:"

IFS="$DEFAULT_IFS"

上記のコードは https://github.com/artsince/docker-neo4j-auth/blob/master/build_auth_string.sh から来ました。

そして、上記のスクリプトを次のように実行します

build_auth_string.sh myUsername:myP @ ssw0rd

それを認証ファイルにコピー/貼り付けして、以前あったものを置き換え、neo4jを再起動します:)

9
J.J

Neo4j 2.2.xの新規インストールのユーザーは「neo4j」で、初期パスワードは「neo4j」です。何かをする前に、パスワードを変更する必要があります。

httpie を呼び出してREST APIを操作します。たとえば、「foobar」の新しいパスワードを設定するには、次のコマンドを実行します。このコマンド:

http -a neo4j:neo4j POST http://localhost:7474/user/neo4j/password password=foobar
5
Jason McVetta

パスワードをリセットする必要があり、古いパスワードがわからない場合:Windowsユーザーの場合、次のパスに移動します。

C:\ Users\xyz\Documents\Neo4j\default.graphdb\dbms

authファイルを削除します。 neo4jを再起動すると、再びユーザー名とパスワードの設定を求められます!!デフォルトではユーザー名:neo4jパスワード:neo4j

2
Urmay Shah

Neo4Jのバージョン2.3.1のMacユーザーの場合、資格情報をリセットする最良の方法は、資格情報を持つファイルを削除して、サービスを再度開始することです。

従うべき手順

  1. 資格情報を含むファイルがブラウザコンソール(localhost:7474)からどこにあるかを見つけます。スター(お気に入り)->システム->サーバー構成に移動します
  2. dbms.security.auth_store.locationプロパティを検索して、それが指す場所を確認します。私の場合は/ Users/felipe/Documents/Neo4j/default.graphdb /./ dbms/auth
  3. そのファイルを削除します。
  4. サービスを再度開始し、コンソール(localhost:7474)に再度アクセスします。

デフォルトでは、ユーザーneo4jのパスワードを設定するよう求められます。

役に立てば幸いです。

1
felipe

現在、neo4j-Shellを使用して認証を設定することはできません。既に述べたように、REST APIを使用する方法です。便利なRESTクライアントを使用すると、これは非常に簡単です。

私が選んだツールは、 postman (chrome browser)のプラグイン)または httpie のいずれかです。たとえば、httpieでパスワードを変更する場合ユーザーにとっては次のように簡単です:

 http localhost:7474/user/neo4j/password password=neo4j new_password=mypass

パスワード(およびその他の認証設定)はクラスター内で自動的に配布されないことに注意してください。 インスタンス間で設定を手動でコピーする方法 を参照してください。

0

Felipeの応答について詳しく説明するには(コメントするのに十分なrepポイントがないため)、サーバーを停止し、両方のauthファイルを削除しました。

  • DBROOT\data\auth
  • DBROOT\dbms\auth

サーバーを再起動し、localhost:7474経由で接続し、デフォルトのユーザー名/パスワード(neo4j/neo4j)を使用してから、新しいパスワードの入力を求められました。

0
Bunni H