多因素身份验证

配置 MFA

MFA 是通过用户选项 multi_factor_auth_rulesmulti_factor_auth_enabled 按用户基础配置的。 在设置这些选项之前,用户可以使用任何启用的身份验证方法进行身份验证。

MFA 规则

MFA 规则允许管理员强制用户使用特定的身份验证形式或身份验证形式的组合来获取令牌。

规则通过用户选项 multi_factor_auth_rules 如下指定:

[["password", "totp"], ["password", "custom-auth-method"]]

它们是一个列表的列表。子列表的元素必须是字符串,旨在镜像所需的身份验证方法名称(例如 passwordtotp 等),如在 keystone.conf 文件中的 [auth] methods 选项中定义的那样。每个方法列表指定一个规则。

如果用户提供的身份验证方法匹配(或超过)列表中的身份验证方法,则使用该规则。找到的第一个匹配规则将被使用(规则不会以特定顺序处理)。如果用户定义的规则集为 [["password", "totp"]],则用户必须提供密码和 totp 身份验证方法(并且这两种方法都必须成功)才能接收令牌。但是,如果用户定义的规则集为 [["password"], ["password", "totp"]],则用户可以单独使用 password 方法,但如果指定了 totp,则需要同时使用 passwordtotp

keystone.conf 文件中的 [auth] methods 选项中未定义的任何身份验证方法在处理规则时将被忽略。不允许空规则。如果由于其中不存在有效的身份验证方法而导致规则为空,则该规则将在身份验证时被丢弃。如果没有规则或用户没有有效的规则,则身份验证以默认方式进行:任何单个配置的身份验证方法足以接收令牌。

注意

通常不应在任何 MFA 规则中指定 token 身份验证方法。 token 身份验证方法将包含原始身份验证请求的所有先前身份验证方法,并将匹配相应的规则集。这是有意为之,因为 token 方法用于重新定义/更改活动项目。

启用 MFA

在 MFA 规则对用户生效之前,必须通过用户选项 multi_factor_auth_enabled 为该用户启用 MFA。默认情况下,此选项未设置,并且在配置之前规则不会生效。

如果用户应免除 MFA 规则,无论是否设置,可以将用户选项设置为 False

使用 MFA

有关一些示例,请参阅用户指南中的 多因素身份验证

支持的多因素身份验证方法

目前,TOTP 是与密码一起建议的唯一第二因素,但计划在未来包含更多因素。

TOTP

这是一种简单的 6 位密码,由服务器和客户端从已知的共享密钥生成。

以多步骤方式使用,这是当今最常用的双因素方法。

请参阅:基于时间的 One-time Password (TOTP)