配置 Neo4j 使用 Active Directory 属性 samAccountName 验证来自不同 OU 的用户
从 Neo4j 3.2.2 版本开始,可以使用 Active Directory 属性 samAccountName 进行身份验证,而不是使用 LDAP Display Name 属性。以下知识库文章对此进行了详细说明:如何允许使用 Active Directory 属性 samAccountName 进行身份验证
然而,当需要对在不同 OU 下定义的用户进行身份验证和授权,并且无法在 Neo4j 配置文件中定义系统账户时,则需要稍有不同的配置。这特定于 Active Directory,并且需要使用 samAccountName 属性登录(我们发现这是常见情况)。
必须设置以下 conf/neo4j.conf
参数才能使用 samAccountName 并支持验证来自多个 OU 的用户
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 设置,我们成功验证了 Admin User 和 Support User 这两个用户。他们将分别使用 adminuser
和 supportuser1
登录。
此页是否有帮助?