Neo4j系列导航:
neo4j安装及简单实践
cypher语法基础
cypher插入语法
cypher插入语法
cypher查询语法
cypher通用语法
cypher函数语法
neo4j索引及调优
neo4j java Driver等更多
1.高级连接信息
1.1.连接uri
驱动程序支持连接到表单的uri:
<SCHEME>://<HOST>[:<PORT>[?policy=<POLICY-NAME>]]
<SCHEME>
是neo4j、neo4j+s、neo4j+ssc、bolt、bolt+s、bolt+ssc中的一个。<HOST>
是Neo4j服务器所在的主机名。<PORT>
是可选的,表示Bolt协议可用的端口。<policy - name >
是可选的服务器策略名称。服务器策略需要在使用之前设置。
驱动程序不支持连接到嵌套路径,例如example.com/neo4j/。服务器必须可以从域根访问。
1.2.连接协议和安全性
驱动程序和服务器之间的通信由Bolt进行调解。服务器URI的模式决定连接是否加密,如果加密,则决定接受哪种类型的证书。
URL scheme加密注释neo4j×本地设置的默认值neo4j+s√ (只适用于CA-signed证书)默认为Auraneo4j+ssc√ (CA- 和 self-signed证书)
驱动程序在连接成功时从服务器接收路由表,而不管实例是适当的集群环境还是单机环境。驱动程序的路由行为与Neo4j的集群协同工作,将读/写事务定向到适当的集群成员。如果希望以特定的机器为目标,请使用bolt、bolt+s或bolt+ssc URI模式。
要使用的连接模式是由服务器需求决定的。必须事先了解正确的服务器模式,因为在连接之前不会公开元数据。如果不确定,请咨询数据库管理员。
1.3.身份验证方法
1.3.1.Basic 认证(默认)
Basic身份验证方案依赖于传统的用户名和密码。这些凭证可以是本地安装的凭证,也可以是Aura实例提供的凭证。
```java
import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.GraphDatabase;
GraphDatabase.driver(dbUri, AuthTokens.basic(dbUser, dbPassword));
基本身份验证方案也可用于针对LDAP服务器进行身份验证(仅限企业版)
#### 1.3.2.Kerberos认证
Kerberos身份验证方案需要base64编码的票证。只有在服务器安装了Kerberos Add-on时才能使用它。
```java
import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.GraphDatabase;
GraphDatabase.driver(dbUri, AuthTokens.kerberos(ticket));
1.3.3.Bearer认证
Bearer身份验证方案需要一个由身份提供者通过Neo4j的单点登录功能提供的base64编码令牌
```java
import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.GraphDatabase;
GraphDatabase.driver(dbUri, AuthTokens.bearer(ticket));
承载认证方案需要在服务器端配置单点登录。配置完成后,客户端可以通过Discovery API发现Neo4j的配置。
#### 1.3.4.自定义身份验证
使用AuthTokens.custom()登录到具有自定义身份验证方案的服务器。
```java
import org.neo4j.driver.AuthTokens;
import org.neo4j.driver.GraphDatabase;
GraphDatabase.driver(dbUri, AuthTokens.custom(principal, credentials, realm, scheme, parameters));
1.3.5.无认证
如果在服务器上禁用了认证,则可以完全省略认证参数
2.日志记录
默认情况下,驱动程序通过Java日志框架
Java .util.logging
记录
INFO
消息。要更改驱动程序的日志记录行为,请在创建
driver
对象时使用.withlogging()方法。
importjava.util.logging.Level;importorg.neo4j.driver.AuthTokens;importorg.neo4j.driver.Config;importorg.neo4j.driver.GraphDatabase;importorg.neo4j.driver.Logging;try(var driver =GraphDatabase.driver(dbUri,AuthTokens.basic(dbUser, dbPassword),Config.builder().withLogging(Logging.console(Level.FINE)).build())){
driver.verifyConnectivity();}
3.自定义地址解析器
在创建
Driver
对象时,您可以指定一个解析器函数来解析初始化驱动程序的连接地址。
注意: 驱动程序在路由表中接收的地址不能用自定义解析器解析。
可以通过.withresolver()配置方法指定解析器,该方法与ServerAddress对象一起工作。
importjava.util.Set;importorg.neo4j.driver.AuthTokens;importorg.neo4j.driver.Config;importorg.neo4j.driver.GraphDatabase;importorg.neo4j.driver.net.ServerAddress;// 连接到example.com:9999被解析到localhost:7687var addresses =Set.of(ServerAddress.of("localhost",7687)// omit the scheme; provide only host);var config =Config.builder().withResolver(address -> addresses).build();try(var driver =GraphDatabase.driver("neo4j://example.com:9999",AuthTokens.basic(dbUser, dbPassword), config)){
driver.verifyConnectivity();}
4.OCSP装订
如果服务器上启用了OCSP装订,则可以配置驱动程序在SSL握手期间检查证书吊销。使用CA签名的证书时,OCSP装订提高了安全性和性能。
有两种方法实现此功能:
- .withverifyifpresentrevocationchecks() :如果可用,验证证书的装订,但如果没有发现装订,则不会验证失败。
- .withstrictrevocationchecks():验证证书的装订,如果没有发现装订,则验证失败。
这两种方法都作用于一个
Config.TrustStrategy
对象,因此您必须明确要信任哪些证书,并且不能依赖驱动程序从连接URI(本文4.1) 方案中推断证书。这意味着您必须将这些方法链接到
Config.TrustStrategy.trustSystemCertificates()
。为了避免配置冲突,连接URI方案也必须设置为
neo4j
(即不是
neo4j+s
也不是
neo4j+ssc
)。
importorg.neo4j.driver.Config;// 验证证书的装订,但如果没有发现装订,则不会验证失败Config config =Config.builder().withEncryption().withTrustStrategy(Config.TrustStrategy.trustSystemCertificates().withVerifyIfPresentRevocationChecks())// mark-line.build();try(var driver =GraphDatabase.driver(dbUri,AuthTokens.basic(dbUser, dbPassword), config)){
driver.verifyConnectivity();}
5.其他连接参数
驱动程序配置参数:API文档-Driver.graphdatabase
版权归原作者 Timmer丿 所有, 如有侵权,请联系我们删除。