加载 LDAP

使用“apoc.load.ldap”,您可以对任何启用了 LDAP v3 的目录执行查询,结果将转换为条目流。然后,可以使用这些条目来更新或创建图结构。

限定名称 类型 版本

apoc.load.ldap

apoc.load.ldap("key" 或 {connectionMap},{searchMap}) 从 ldap 源加载条目 (yield entry)

过程

Apoc 扩展

参数

参数 属性 描述

{connectionMap}

ldapHost

ldap 服务器:端口,如果省略端口,则将使用默认端口 389

loginDN

这是 ldap 服务器用户的 dn,该用户对 ldap 服务器具有读取访问权限

loginPW

这是 loginDN 使用的密码

ssl

布尔值,指示是否使用 SSL 连接(默认为 false)

{searchMap}

searchBase

从此条目执行搜索

searchScope

SCOPE_ONE(一层)或 SCOPE_SUB(所有子级)或 SCOPE_BASE(仅基节点)

searchFilter

在此处放置标准 ldap 搜索过滤器,例如:(objectClass=*) 表示 ldap 条目必须具有 objectClass 属性。

attributes

可选。如果省略,则将返回条目的所有属性。如果指定,则仅返回指定的属性。无论 attributes 设置如何,返回的条目始终将具有“dn”属性。

加载 LDAP 示例

从 ldap 服务器检索组成员信息
call apoc.load.ldap({ldapHost : "ldap.forumsys.com", loginDN : "cn=read-only-admin,dc=example,dc=com", loginPW : "password"},
{searchBase : "dc=example,dc=com",searchScope : "SCOPE_SUB"
,attributes : ["uniqueMember","cn","uid","objectClass"]
,searchFilter: "(&(objectClass=*)(uniqueMember=*))"}) yield entry
return entry.dn,  entry.uniqueMember
entry.dn entry.uniqueMember

"ou=mathematicians,dc=example,dc=com"

["uid=euclid,dc=example,dc=com", "uid=riemann,dc=example,dc=com", "uid=euler,dc=example,dc=com", "uid=gauss,dc=example,dc=com", "uid=test,dc=example,dc=com"]

"ou=scientists,dc=example,dc=com"

"ou=italians,ou=scientists,dc=example,dc=com"

"uid=tesla,dc=example,dc=com"

"ou=chemists,dc=example,dc=com"

从 ldap 服务器检索组成员信息并在 Neo4j 中创建结构
call apoc.load.ldap({ldapHost : "ldap.forumsys.com", loginDN : "cn=read-only-admin,dc=example,dc=com", loginPW : "password"},
{searchBase : "dc=example,dc=com",searchScope : "SCOPE_SUB"
,attributes : ["uniqueMember","cn","uid","objectClass"]
,searchFilter: "(&(objectClass=*)(uniqueMember=*))"}) yield entry
merge (g:Group {dn : entry.dn})
on create set g.cn = entry.cn
foreach (member in entry.uniqueMember |
  merge (p:Person { dn : member })
  merge (p)-[:IS_MEMBER]->(g)
)

凭据

为了保护凭据,您可以在 conf/apoc.conf 中配置别名

apoc.conf 语法
apoc.loadldap.myldap.config=<host>:<port> <loginDN> <loginPW>
apoc.conf
apoc.loadldap.myldap.config=ldap.forumsys.com:389 cn=read-only-admin,dc=example,dc=com password

然后

call apoc.load.ldap({ldapHost : "ldap.forumsys.com", loginDN : "cn=read-only-admin,dc=example,dc=com", loginPW : "password"}
, {searchBase : "dc=example,dc=com"
  ,searchScope : "SCOPE_SUB"
  ,attributes : ["cn","uid","objectClass"]
  ,searchFilter: "(&(objectClass=*))"
  }) yield entry
return entry.dn,  entry

变为

call apoc.load.ldap("myldap"
,{searchBase : "dc=example,dc=com"
 ,searchScope : "SCOPE_SUB"
 ,attributes : ["cn","uid","objectClass"]
 ,searchFilter: "(&(objectClass=*))"
 }) yield entry
return entry.dn,  entry