多因素认证模块
多因素认证模块与认证提供者一起使用,以提供一个完全可配置的认证框架。每个 MFA 模块可以提供一个多因素认证功能。用户可以启用多个 MFA 模块,但在登录过程中只能选择一个模块。
定义一个 mfa 认证模块
info
我们目前只支持内置的 mfa 认证模块。未来可能会支持自定义的认证模块。
多因素认证模块在 homeassistant/auth/mfa_modules/<模块名>.py
中定义。认证模块需要提供 MultiFactorAuthModule
类的实现。
有关完整实现的认证模块示例,请参见 insecure_example.py。
多因素认证模块应扩展 MultiFactorAuthModule
类的以下方法。
方法 | 必须 | 描述 |
---|---|---|
@property def input_schema(self) | 是 | 返回定义用户输入表单的模式。 |
async def async_setup_flow(self, user_id) | 是 | 返回一个 SetupFlow 来处理设置工作流。 |
async def async_setup_user(self, user_id, setup_data) | 是 | 为使用此认证模块设置用户。 |
async def async_depose_user(self, user_id) | 是 | 从此认证模块中删除用户信息。 |
async def async_is_user_setup(self, user_id) | 是 | 返回用户是否已设置。 |
async def async_validate(self, user_id, user_input) | 是 | 给定用户 ID 和用户输入,返回验证结果。 |
async def async_initialize_login_mfa_step(self, user_id) | 否 | 在显示登录流程的 MFA 步骤之前调用一次。这不是 MFA 模块的初始化,而是登录流程中的 MFA 步骤。 |