用户身份验证提供程序

可以使用 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)配置的声明,并用于查找其 IDprovider 属性分别与 OIDC 提供程序的 sub 和提供程序匹配的身份验证提供程序。

  • 对于 LDAP 提供程序,dn 用于查找 provider 属性为 ldapID 属性与提供的 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 以完成迁移。此后,只有在数据库中具有相应身份验证提供程序的用户才能进行身份验证和授权。

使用原始 CREATE USER …​ SET PASSWORD 命令创建的现有用户隐含地具有本机(用户名/密码)身份验证提供程序,因此您无需使用 SET AUTH 显式添加它。

要验证用户附加了哪些身份验证提供程序,请使用 SHOW USERS WITH AUTH 命令。

示例

有关如何将身份验证提供程序与不同身份验证提供程序一起使用的示例,请参阅以下部分:

© . All rights reserved.