不接受 neo4j enterprise 3.0.6 base64 编码的凭据
neo4j enterprise 3.0.6 base64-encoded credentials are not accepted
我正在使用 Neo4j Enterprise 3.0.6 在 AWS 上构建 Neo4j 集群,目前正在尝试从 HAProxy 实例连接到 Neo4j 实例。出于测试目的,我 curl
从 HAProxy 实例到 Neo4j 实例。使用
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 中明确描述了使用基本身份验证 header 提供作为 base64 编码字符串的凭据。我在这里想念什么?
(我已经三次检查 base64 编码是否正确:解码字符串给出了应该发送的凭证。)
bmVvNGo6cGFzc3dvcmQK
是neo4j:password\n
的Base64编码,而bmVvNGo6cGFzc3dvcmQ=
是neo4j:password
的realBase64编码,没有任何尾随行 return。当 运行 在详细模式下卷曲时,您可以观察到它:
$ 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=
我正在使用 Neo4j Enterprise 3.0.6 在 AWS 上构建 Neo4j 集群,目前正在尝试从 HAProxy 实例连接到 Neo4j 实例。出于测试目的,我 curl
从 HAProxy 实例到 Neo4j 实例。使用
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 中明确描述了使用基本身份验证 header 提供作为 base64 编码字符串的凭据。我在这里想念什么?
(我已经三次检查 base64 编码是否正确:解码字符串给出了应该发送的凭证。)
bmVvNGo6cGFzc3dvcmQK
是neo4j:password\n
的Base64编码,而bmVvNGo6cGFzc3dvcmQ=
是neo4j:password
的realBase64编码,没有任何尾随行 return。当 运行 在详细模式下卷曲时,您可以观察到它:
$ 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=