使用 Active Directory 属性 samAccountName 配置 Neo4j 从不同的 OU 认证用户
从 Neo4j 版本 3.2.2 开始,可以使用 Active Directory 属性 samAccountName 进行身份验证,而不是 LDAP 显示名称属性。 这在以下知识库文章中详细介绍:如何允许使用 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
登录
此页面是否有帮助?