2016-09-22 26 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=