0


neo4j使用详解(十九、java driver高级连接及安全——最全参考)

请添加图片描述

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

标签: neo4j java 安全

本文转载自: https://blog.csdn.net/qq_35754073/article/details/137754852
版权归原作者 Timmer丿 所有, 如有侵权,请联系我们删除。

“neo4j使用详解(十九、java driver高级连接及安全——最全参考)”的评论:

还没有评论