Neo4j简单身份验证

hvvq6cgz  于 2022-11-23  发布在  其他
关注(0)|答案(3)|浏览(267)

我可以使用用户名和密码登录这里http://localhost:7474/通过键入server: connect并登录。我可以从那里通过执行查询查看数据。
然后我立即切换到一个新的选项卡,或者在同一个选项卡中,转到:http://localhost:7474/db/data/,得到:

{
  "errors" : [ {
    "message" : "No authorization header supplied.",
    "code" : "Neo.ClientError.Security.AuthorizationFailed"
  } ]
}

而且我不能使用py 2Neo或任何NEO4J库连接,也不能使用相同的密码;它们返回完全相同的错误。
我做错了什么?

njthzxwz

njthzxwz1#

将此添加到您的http-header请求中:
授权人:“基本xxxx”
xxxx = base64(用户名:密码)

eaf3rand

eaf3rand2#

现在,所有REST API请求都必须包含Authorization头。引用neo4j手册的REST API Authentication and Authorization页:
请求应包括值为Basic <payload>的Authorization头,其中“payload”是base64编码的字符串“username:password”。
该页包含一些示例。

  • 注意:您也可以禁用身份验证--但出于开发目的,您只应在个人计算机上禁用身份验证。要禁用身份验证,请将<neo4j-install-dir>/conf/neo4j-server.properties中的dbms.security.auth_enabled属性设置为false,然后重新启动服务器。*

[已更新]
顺便说一句,既然你的问题提到了py2neo,你应该知道它的Graph类支持“授权”。

gojuced7

gojuced73#

那请求庄生应该是这样的:(XXX是user:password字符串的Base64编码-要编码的字符串包含列):

{
    method: "POST",
    headers: { 
        "content-type": "application/json", 
        "Authorization": "Basic XXX"
    },
    body: {
        statements:[
            {
                statement: query,
                parameters: params
            }
        ]
    }
}

这已经在Javascript(axios)和Deno.land(fetch API)中进行了测试。ES Javascript包含一个内置的base64编码函数:btoa()

相关问题