用户身份验证提供程序
可以使用 Cypher 通过在用户上设置身份验证提供程序来控制用户级别的身份验证和授权。
要使用身份验证提供程序,您需要将 dbms.security.require_local_user
配置设置设为 true
。此设置强制要求附带相关身份验证提供程序的用户必须在数据库中存在,然后他们才能使用该身份验证提供程序进行身份验证和授权。
用户身份验证提供程序允许您将外部定义的用户(例如,在第三方身份提供程序中,如 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 以完成迁移。此后,只有在数据库中具有相应身份验证提供程序的用户才能进行身份验证和授权。
使用原始 要验证用户附加了哪些身份验证提供程序,请使用 |