2016-09-22 63 views
0

我正在使用Neo4j Enterprise 3.0.6在AWS上構建Neo4j集羣,目前正試圖從HAProxy實例連接到Neo4j實例。用於測試目的I curl從HAProxy實例到Neo4j實例。使用neo4j企業版3.0.6 base64編碼的憑據不被接受

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,我猜)後一種方案按預期工作。我有點迷失在這裏。從documentation中明確描述了提供憑證作爲基本身份驗證標頭的base64編碼字符串。我在這裏錯過什麼?

(我有三重檢查的base64編碼是正確的:解碼串給出確切地應該發送的憑據。)

回答

1

bmVvNGo6cGFzc3dvcmQKneo4j:password\n Base64編碼,而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=