2017-05-04 61 views
0

我有的Neo4j上的泊塢容器,其中我已映射內部容器端口7473和7687各自的主機端口7473和7687運行,7474被暴露,但不被映射。Neo4j的與Py2neo:未經授權錯誤HTTPS

關於網絡的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的Web客戶端和更改默認密碼。

關於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/ 

任何想法爲什麼這可能發生?

回答

0

的解決方案是調用由庫這樣提供獨立的身份驗證方法:

auth_port = str(self._PORT_HTTPS if use_secure else self._PORT_HTTP) 
py2neo.authenticate(":".join([ip_address, auth_port]), username, password) 

我花了一段時間纔到這一點,因爲剛開始我還以爲認證是在構造函數中自動完成然後我無法使認證方法運行,因爲我使用的是螺栓端口。