用户身份验证提供程序
可以使用 Cypher 在用户级别控制身份验证和授权,方法是在用户上设置身份验证提供程序。
要使用身份验证提供程序,您需要将dbms.security.require_local_user
配置设置设置为true
。此设置要求在用户可以使用该身份验证提供程序进行身份验证和授权之前,其关联的相关身份验证提供程序必须存在于数据库中。
用户身份验证提供程序允许您将外部定义的用户(例如,在第三方 ID 提供程序(如 OIDC 或 LDAP)中)链接到 Neo4j 内部用户模型。内部模型可以定义角色(授权)、SUSPENDED
状态、HOME DATABASE
以及元数据,例如用户的唯一显示名称。为了保持一致性,您还可以使用身份验证提供程序语法定义native
(基于密码)身份验证,包括仅限本机的用户(即,只能使用密码进行身份验证的用户)。
用例
用户身份验证提供程序可用于各种用例,包括
-
为不同的用户配置不同的身份验证提供程序(包括本机用户名/密码身份验证)。
-
为用户设置任意简单的用户名,同时使用外部唯一标识符(如 OIDC 身份验证的
sub
,它本身不是用户友好的值)。 -
为外部身份验证的用户设置
HOME DATABASE
。 -
为外部身份验证的用户设置
SUSPENDED
状态。 -
使用本机授权来管理外部身份验证用户的角色。
-
保留对哪些用户可以从数据库内部进行身份验证的完全控制权。
工作原理
当用户进行身份验证时,其身份属性会与数据库中身份验证提供程序的相关属性进行检查。如果匹配,则用户将链接到 Neo4j 用户,并根据与匹配的身份验证提供程序名称匹配的 DBMS 安全配置设置进行授权。
匹配查找的方式取决于提供程序的类型。例如
-
对于 OIDC 提供程序,从令牌中获取由
dbms.security.oidc.mysso.claims.username
(默认值为sub
)配置的声明,并用于查找其ID
和provider
属性分别与 OIDC 提供程序的sub
和提供程序匹配的身份验证提供程序。 -
对于 LDAP 提供程序,
dn
用于查找具有provider
属性为ldap
且ID
属性与提供的dn
匹配的身份验证提供程序。 -
对于
native
(用户名/密码)提供程序,提供的用户名本身用于查找身份验证提供程序。
启用用户身份验证提供程序模式
要启用用户身份验证提供程序模式,请将配置设置 dbms.security.require_local_user
设置为 true
。此设置要求在用户可以使用该身份验证提供程序进行身份验证和授权之前,其关联的相关身份验证提供程序必须存在于数据库中。
当用户进行身份验证时,Neo4j 会搜索具有匹配身份验证提供程序的用户。如果找到匹配项,则用户可以登录并成功获得授权。
迁移到身份验证提供程序模式
如果您在数据库中已有用户,并且想要迁移到身份验证提供程序模式,则可以使用 ALTER USER … SET AUTH
命令将身份验证提供程序附加到每个用户。在您将 dbms.security.require_local_user
更改为 true
之前,这不会影响用户的身份验证和授权方式。
在将身份验证提供程序添加到用户的过程完成后,您可以将 dbms.security.require_local_user
设置为 true
并重新启动 DBMS 以完成迁移。此后,只有数据库中具有相应身份验证提供程序的用户才能进行身份验证和授权。
使用原始 要验证哪些身份验证提供程序附加到用户,请使用 |