Neo4J 与 Py2neo:未经授权的错误 HTTPS
Neo4J with Py2neo: Unauthorized error HTTPS
我在 Docker 容器上安装了 Neo4J 运行,我在其中映射了内部容器端口7473 和 7687 到它们各自的主机端口 7473 和 7687,7474 被暴露但未映射。
有关网络的 Neo4J 服务器配置。
# Bolt connector dbms.connector.bolt.enabled=true
#dbms.connector.bolt.tls_level=OPTIONAL
dbms.connector.bolt.listen_address=0.0.0.0:7687
# HTTP Connector. There must be exactly one HTTP connector.
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=0.0.0.0:7474
# HTTPS Connector. There can be zero or one HTTPS connectors.
dbms.connector.https.enabled=true
dbms.connector.https.listen_address=0.0.0.0:7473
我能够通过浏览器登录Neo4J的webclient并更改默认密码。
关于 Python 代码,这是我创建客户端的行。
self.client = py2neo.Graph(host =ip_address,
username=username,
password=password,
secure =use_secure,
bolt =use_bolt)
一旦我执行了这样的查询。
node = Node("FooBar", foo="bar")
self.client.create(node)
我收到以下未经授权的异常。
py2neo.database.status.Unauthorized: https://localhost:7473/db/data/
知道为什么会发生这种情况吗?
解决方案是像这样调用库提供的单独身份验证方法:
auth_port = str(self._PORT_HTTPS if use_secure else self._PORT_HTTP)
py2neo.authenticate(":".join([ip_address, auth_port]), username, password)
我花了一些时间才明白这一点,因为起初,我认为身份验证是在构造函数中自动完成的,然后我无法制作身份验证方法 运行,因为我使用的是螺栓端口。
我在 Docker 容器上安装了 Neo4J 运行,我在其中映射了内部容器端口7473 和 7687 到它们各自的主机端口 7473 和 7687,7474 被暴露但未映射。
有关网络的 Neo4J 服务器配置。
# Bolt connector dbms.connector.bolt.enabled=true
#dbms.connector.bolt.tls_level=OPTIONAL
dbms.connector.bolt.listen_address=0.0.0.0:7687
# HTTP Connector. There must be exactly one HTTP connector.
dbms.connector.http.enabled=true
dbms.connector.http.listen_address=0.0.0.0:7474
# HTTPS Connector. There can be zero or one HTTPS connectors.
dbms.connector.https.enabled=true
dbms.connector.https.listen_address=0.0.0.0:7473
我能够通过浏览器登录Neo4J的webclient并更改默认密码。
关于 Python 代码,这是我创建客户端的行。
self.client = py2neo.Graph(host =ip_address,
username=username,
password=password,
secure =use_secure,
bolt =use_bolt)
一旦我执行了这样的查询。
node = Node("FooBar", foo="bar")
self.client.create(node)
我收到以下未经授权的异常。
py2neo.database.status.Unauthorized: https://localhost:7473/db/data/
知道为什么会发生这种情况吗?
解决方案是像这样调用库提供的单独身份验证方法:
auth_port = str(self._PORT_HTTPS if use_secure else self._PORT_HTTP)
py2neo.authenticate(":".join([ip_address, auth_port]), username, password)
我花了一些时间才明白这一点,因为起初,我认为身份验证是在构造函数中自动完成的,然后我无法制作身份验证方法 运行,因为我使用的是螺栓端口。