配置 Neo4j 以使用 Active Directory 属性 samAccountName 对不同 OU 的用户进行身份验证
从 Neo4j 版本 3.2.2 开始,可以使用 Active Directory 属性 samAccountName 进行身份验证,而不是 LDAP 显示名称属性。以下知识库文章详细说明了此内容:如何允许使用 Active Directory 属性 samAccountName 进行身份验证
但是,当您需要对定义在不同组织单元(OU)下的用户进行身份验证和授权,并且无法在 Neo4j 配置文件中定义系统账户时,需要稍作不同的配置。这是针对 Active Directory 的特定要求,并且需要使用 samAccountName 属性登录(我们发现这是常见情况)。
以下 conf/neo4j.conf 参数必须设置为使用 samAccountName 并支持对来自多个组织单元的用户进行身份验证
dbms.security.auth_enabled=true
dbms.security.auth_provider=ldap
dbms.security.ldap.host=<the LDAP hostname>
dbms.security.ldap.authentication.user_dn_template={0}@example.com
dbms.security.ldap.authorization.user_search_base=dc=example,dc=com
dbms.security.ldap.authorization.user_search_filter=(&(objectClass=user)(sAMAccountName={0}))
dbms.security.ldap.authorization.group_membership_attributes=memberOf
dbms.security.ldap.authorization.group_to_role_mapping=\
"cn=Neo4j Read Only,cn=Users,dc=example,dc=com" = reader ;\
"cn=Neo4j Read-Write,cn=Users,dc=example,dc=com" = publisher ;\
"cn=Neo4j Schema Manager,cn=Users,dc=example,dc=com" = architect ;\
"cn=Neo4j Administrator,cn=Users,dc=example,dc=com" = admin ;\
"cn=Neo4j Procedures,cn=Users,dc=example,dc=com" = allowed_role
关键点
-
使其工作的关键区别在于在
user_dn_template中指定{0}@example.com模式。这使得身份验证从根域开始,并检查整个树结构,无论用户位于其中的哪个位置。 -
请注意,您不应设置
dbms.security.ldap.authentication.use_samaccountname。否则将无法正常工作。
使用以下 AD 设置,我们成功地对管理员用户和支持用户进行身份验证。他们分别使用 adminuser 和 supportuser1 登录。


此页面有帮助吗?