web-dev-qa-db-fra.com

Comment configurer un utilisateur et un mot de passe pour le cluster neo4j sans REST API

La version que j'utilise est neo4j-enterprise-2.2.0-M02

Ma question est la suivante: Comment puis-je configurer un utilisateur (comme ajouter un nouvel utilisateur, changer le mot de passe, etc.) dans le backend ou le navigateur, au lieu de l'API REST? Puis-je le faire via neo4j-shell? imaginez que je suis un DBA, il n’est pas très pratique de le faire avec l’API REST.

Toute aide est la bienvenue!

31
zxz

Vous pouvez utiliser le navigateur à la place de l'API. Allez simplement à http://localhost:7474 (ou à l’adresse IP à laquelle la console Web est liée) et vous serez invité à changer le mot de passe. Une fois authentifié, utilisez la commande :server change-password pour modifier le mot de passe à nouveau.

Il n'est pas encore possible de créer plusieurs comptes d'utilisateur dans le système.

Vous pouvez utiliser la commande :help server pour voir les commandes d'authentification disponibles.

48
subvertallchris

Bien que j'utilise toujours l'API REST, je proposerai l'option cURL à toute personne n'ayant pas accès à un navigateur Web (instance AWS, par exemple):

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

Une autre option consiste à modifier le fichier auth directement et à redémarrer neo. En faisant cela, vous pouvez même changer le nom d'utilisateur!

Courir

trouver/-name dbms

Pour moi, cela a donné un coup: 

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

Enregistrez ce code sous le nom 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"

Le code correspondant à ce qui précède provient de https://github.com/artsince/docker-neo4j-auth/blob/master/build_auth_string.sh - je l’affiche ici, il suffit de l’encapsuler.

Et puis, lancez le script ci-dessus comme 

build_auth_string.sh monUsername: myP @ ssw0rd

Copiez/collez-le dans votre fichier d'authentification en remplaçant ce qui était auparavant et redémarrez neo4j :)

9
J.J

Une nouvelle installation de Neo4j 2.2.x a un utilisateur 'neo4j', avec un mot de passe initial 'neo4j'. Vous devez changer le mot de passe avant de pouvoir faire quoi que ce soit. 

Il est facile de le faire depuis la ligne de commande en appelant httpie pour interagir avec l’API REST. Par exemple, pour définir un nouveau mot de passe 'foobar', exécutez la commande suivante:

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

Pour les utilisateurs de Mac, la version 2.3.1 de Neo4J, le meilleur moyen de réinitialiser les informations d'identification est de supprimer le fichier contenant les informations d'identification et de redémarrer le service.

Étapes à suivre

  1. Recherchez l'emplacement du fichier contenant les informations d'identification à partir de la console du navigateur (localhost: 7474). Allez dans Star (Favoris) -> Système-> Configuration du serveur
  2. Recherchez dbms.security.auth_store.location property pour voir où il pointe. Dans mon cas, c’était /Users/felipe/Documents/Neo4j/default.graphdb/./dbms/auth
  3. Supprimer ce fichier.
  4. Redémarrez le service et accédez à nouveau à la console (localhost: 7474). 

Par défaut, il vous sera demandé de définir le mot de passe pour l'utilisateur neo4j. 

J'espère que ça aide.

1
felipe

Si vous voulez réinitialiser le mot de passe et que vous ne connaissez pas l'ancien mot de passe: , Puis pour l'utilisateur Windows Aller à ce chemin:

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

et supprimez ce fichier auth . Redémarrez le neo4j. Ils demanderont à nouveau de définir le nom d'utilisateur et le mot de passe !! Par défaut Nom d'utilisateur: neo4j Mot de passe: neo4j

1
Urmay Shah

Actuellement, il n'est pas possible de configurer l'autorisation à l'aide de neo4j-Shell. Comme vous l'avez mentionné, l'API REST est la voie à suivre. L'utilisation d'un client REST pratique est très simple. 

Mes outils de choix sont soit postman (un plugin pour navigateur Chrome), soit httpie pour la ligne de commande. Par exemple. avec httpie, changer le mot de passe d'un utilisateur est aussi simple que:

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

Sachez que le mot de passe (et les autres paramètres d'autorisation) ne sont pas automatiquement distribués dans un cluster. Consultez le manuel manual pour copier les paramètres entre les instances .

0
Stefan Armbruster

Pour élaborer sur la réponse de Felipe (étant donné que je n'ai pas assez de points de repère pour commenter): J'ai arrêté le serveur, j'ai supprimé les fichiers d'authentification dans les deux: 

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

Le serveur redémarré et connecté via l'hôte local: 7474, utilisait le nom d'utilisateur/mot de passe par défaut (neo4j/neo4j), puis un nouveau mot de passe m'a été demandé.

0
Bunni H