Fallthrough 身份验证
通常情况下,如果用户使用所选的第一个身份验证记录验证失败,该用户将被拒绝。但是,可以指定某些身份验证方法在失败时“贯穿”到优先级较低的身份验证记录。当使用多个 LDAP 搜索属性时,这可能很有用。
对于新记录,默认情况下禁用身份验证 fallthrough。
身份验证方法兼容性
下表显示了每种身份验证方法与 fallthrough 身份验证的兼容性。值“yes”表示列中的方法可以贯穿并验证其贯穿到的行方法。值“no”表示您无法贯穿到该方法,且身份验证将结束。
值“-”(破折号)表示虽然可以贯穿,但其没有实际意义。例如,一个 hash
身份验证记录可以贯穿到另一个 hash
身份验证记录,但身份验证始终会失败,因为您无法贯穿到正确的密码:
例如,假设将以下启用了 fallthrough 的身份验证记录授予用户 Bob
:
=> CREATE AUTHENTICATION v_tls_auth METHOD 'tls' HOST TLS '0.0.0.0/0' FALLTHROUGH;
此外,Bob
具有 public
角色,因此具有默认身份验证记录:
=> SELECT auth_name,is_auth_enabled,auth_host_type,auth_method,auth_priority,is_fallthrough_enabled FROM client_auth;
auth_name | is_auth_enabled | auth_host_type | auth_method | auth_priority | is_fallthrough_enabled
---------------------------+-----------------+----------------+-------------+---------------+------------------------
default_hash_network_ipv4 | True | HOST | PASSWORD | -1 | False
default_hash_network_ipv6 | True | HOST | PASSWORD | -1 | False
default_hash_local | True | LOCAL | PASSWORD | -1 | False
(3 rows)
如果从远程地址发起连接的 Bob
使用 v_tls_auth
验证失败,Vertica 会尝试使用下一个(按优先级顺序)身份验证记录 default_hash_network_ipv4
对其进行身份验证。
记录身份验证失败
只有当所有授予的身份验证记录都失败,导致用户被拒绝时,才会记录登录失败。只会记录最后一个失败。
例如,假设一个用户被授予 tls
和 password
两个身份验证记录,并且 tls
记录可以贯穿到 password
记录。
如果用户使用 tls
记录和 password
记录均验证失败,则只会在 LOGIN_FAILURES 中记录 password
失败。
但是,如果用户使用 tls
记录验证失败,但使用 password
记录验证成功,则不会在 LOGIN_FAILURES 中记录失败。因为用户在记录链的末尾没有被拒绝。
示例
要在新的身份验证记录上启用 fallthrough,请使用 CREATE AUTHENTICATION:
=> CREATE AUTHENTICATION v_tls_auth METHOD 'tls' HOST TLS '0.0.0.0/0' FALLTHROUGH;
要在现有身份验证记录上切换 fallthrough,请使用 ALTER AUTHENTICATION:
=> ALTER AUTHENTICATION v_tls_auth NO FALLTHROUGH; -- disable
=> ALTER AUTHENTICATION v_tls_auth FALLTHROUGH; -- enable