neo4j enterprise 3.0.6 base64编码的凭据不被接受

时间:2016-09-22 23:52:42

标签: neo4j http-headers base64 authorization

我正在使用Neo4j Enterprise 3.0.6在AWS上构建Neo4j集群,目前我正在尝试从HAProxy实例连接到Neo4j实例。出于测试目的,我从HAProxy实例到Neo4j实例curl。使用

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 个答案:

答案 0 :(得分:1)

bmVvNGo6cGFzc3dvcmQKneo4j:password\n的Base64编码,而bmVvNGo6cGFzc3dvcmQ=neo4j:password真实 Base64编码,没有任何尾随行返回。在详细模式下运行curl时可以观察它:

$ 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=