2016-09-22 1 views
0

Я создаю кластер Neo4j на AWS с использованием Neo4j Enterprise 3.0.6 и в настоящее время пытаюсь подключиться из экземпляра HAProxy к экземпляру Neo4j. Для целей тестирования I curl из экземпляра HAProxy в экземпляр Neo4j. Использованиеneo4j enterprise 3.0.6 base64-encoded credentials не принимаются

curl --user "neo4j:password" http://10.0.0.181:7474/user/neo4j 

я получить правильный ответ:

{ 
    "password_change_required" : false, 
    "password_change" : "http://10.0.0.181:7474/user/neo4j/password", 
    "username" : "neo4j" 
} 

Однако с базовой авторизации с использованием

curl -H "Authorization: Basic bmVvNGo6cGFzc3dvcmQK" http://10.0.0.181:7474/user/neo4j 

Neo4j отвечает

{ 
    "errors" : [ { 
    "code" : "Neo.ClientError.Security.Unauthorized", 
    "message" : "Invalid username or password." 
    } 
} 

На старой версии Neo4j (2.3.3, я думаю) последняя схема работала так, как ожидалось. Я немного здесь потерялся. Тем более, что предоставление учетных данных в виде строки с кодировкой base64 с заголовком Basic Authentication явно описано в documentation. Что мне здесь не хватает?

(я тройной проверил, что кодирование base64 правильно: Декодирование строки дает точно учетные данные, которые должны быть отправлены.)

ответ

1

bmVvNGo6cGFzc3dvcmQK является кодирование Base64 из neo4j:password\n, в то время как bmVvNGo6cGFzc3dvcmQ= является реального Base64 кодирование neo4j:password, без возврата задней линии. Вы можете наблюдать его при запуске завиток в расширенном режиме:

$ curl -v --user "neo4j:password" localhost:7474 
* Trying 127.0.0.1... 
* Connected to localhost (127.0.0.1) port 7474 (#0) 
* Server auth using Basic with user 'neo4j' 
> GET/HTTP/1.1 
> Host: localhost:7474 
> Authorization: Basic bmVvNGo6cGFzc3dvcmQ= 
> User-Agent: curl/7.43.0 
> Accept: */* 
> 
< ... 

Предыдущие версии Neo4j вероятно отделан расшифрованной строки.

Чтобы правильно кодировать учетные данные, вы можете использовать:

$ echo -n neo4j:password | base64 
bmVvNGo6cGFzc3dvcmQ= 

или

$ printf neo4j:password | base64 
bmVvNGo6cGFzc3dvcmQ=