【问题标题】:neo4j enterprise 3.0.6 base64-encoded credentials are not accepted不接受 neo4j 企业 3.0.6 base64 编码的凭据
【发布时间】:2016-09-22 23:52:42
【问题描述】:

我正在使用 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 中明确描述了将凭据作为带有基本身份验证标头的 base64 编码字符串提供。我在这里想念什么?

(我已经三次检查 base64 编码是否正确:解码字符串给出了应该发送的凭据。)

【问题讨论】:

    标签: neo4j http-headers base64 authorization


    【解决方案1】:

    bmVvNGo6cGFzc3dvcmQKneo4j:password\n 的Base64 编码,而bmVvNGo6cGFzc3dvcmQ=neo4j:passwordreal 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=
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-19
      • 2011-12-19
      • 2018-09-09
      • 2013-03-08
      • 2018-01-23
      相关资源
      最近更新 更多