认证提供者
这是一个高级功能。
当您登录时,一个 auth 提供者 检查您的凭据以确保您是授权用户。
配置认证提供者
Home Assistant 自动配置标准认证提供者,因此除非您配置多个认证提供者,否则您无需在您的 configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中指定 auth_providers
。指定 auth_providers
将禁用所有未列出的认证提供者,因此如果未正确配置,可能会降低安全性或导致登录困难。
如果您决定使用 trusted_networks
作为 auth_provider
,则无法为您列出的受信任网络之外的设备进行身份验证。为了解决这个问题,请确保手动添加默认的 auth_provider
,其类型为 homeassistant
。这将在受信任网络身份验证失败时(正如您期望从您的本地网络以外访问时)向您呈现默认的身份验证登录界面。
认证提供者在您的 configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中的 homeassistant:
块下配置。
如果您将配置移至包,该特定配置必须保留在 configuration.yaml
中。请参见此页面底部的警告区块中的问题 16441。
您可以提供多个认证提供者,例如:
homeassistant:
auth_providers:
- type: homeassistant
- type: trusted_networks
trusted_networks:
- 192.168.0.0/24
可用的认证提供者
Home Assistant 认证提供者
这是默认的认证提供者。创建的第一个用户被指定为 拥有者,并可以创建其他用户。
用户详细信息存储在 [your config]/.storage
目录中。所有密码都是经过哈希和加盐存储的,使攻击者几乎不可能破解密码,即使他们访问文件。
用户可以由拥有者在 Home Assistant 中进行管理。请转到配置面板并点击 Users。
这是 Home Assistant 认证的 configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 中的条目:
homeassistant:
auth_providers:
- type: homeassistant
如果您在 configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中不指定任何 auth_providers
部分,则此提供者将自动设置。
受信任网络
受信任网络认证提供者定义了一系列 IP 地址,您无需进行身份验证(也称为“白名单”)。例如,您可以将本地网络白名单,这样当您在家中访问 Home Assistant 时,不会提示您输入密码。
当您从这些网络登录时,系统会询问您使用哪个用户账户,而您无需输入密码。
这是在 configuration.yaml
configuration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 中设置受信任网络的示例:
homeassistant:
auth_providers:
- type: trusted_networks
trusted_networks:
- 192.168.0.0/24
- fd00::/8
受信任用户示例
homeassistant:
auth_providers:
- type: trusted_networks
trusted_networks:
- 192.168.0.0/24
- 192.168.10.0/24
- fd00::/8
trusted_users:
192.168.0.1: user1_id
192.168.0.0/24:
- user1_id
- user2_id
"fd00::/8":
- user1_id
- group: system-users
首先请注意,对于 trusted_users
配置,您需要使用 user id
。
- 要找到用户 ID,请确保您的浏览器中 Home Assistant 的 URL 以
config/users/
结尾。- 例如:
homeassistant:8123/config/users
。
- 例如:
- 从列表中选择用户,并复制 ID。
- 例如:
acbbff56461748718f3650fb914b88c9
。
- 例如:
-
trusted_users
配置不会验证用户的存在,因此请确保您输入了正确的用户 ID。 - 具有 IPv6 地址的受信任用户必须如示例所示将 IPv6 地址放在引号中。
在上面的示例中,如果用户尝试从 192.168.0.1 访问 Home Assistant,他们将只有一个可供选择的用户。如果从 192.168.0.38(来自 192.168.0.0/24 网络)访问,他们将有两个用户可供选择。如果他们从 192.168.10.0/24 网络访问,则可以从所有可用用户中进行选择(非系统用户和活跃用户)。
特别是,您可以使用 group: GROUP_ID
将某个 用户组
中的所有用户分配为可供选择的用户。组和用户可以混合使用。
跳过登录页面示例
这是一个允许您恢复用户系统实施之前一些体验的功能。如果您来自受信任网络,allow_bypass_login
被启用,并且在登录表单中只有一个可供选择的用户,您可以直接跳转到主页。
如果您允许跳过登录,那么您的 Cookie 将不会被存储,并且每次您在 Home Assistant 中刷新页面时,都会创建一个新的登录。这是因为跳过登录不会给您保存登录的选项。
# 假设您只有一个非系统用户
homeassistant:
auth_providers:
- type: trusted_networks
trusted_networks:
- 192.168.0.0/24
- 127.0.0.1
- ::1
allow_bypass_login: true
- type: homeassistant
假设您只有通过入门过程创建的拥有者,没有创建其他用户。上述示例配置将允许您在从内部网络(192.168.0.0/24)或从本地主机(127.0.0.1)访问时直接访问 Home Assistant 主页。如果您出现登录中止错误,则可以切换到使用 Home Assistant 认证提供者进行登录,如果您从外部网络访问 Home Assistant 实例。
命令行
命令行认证提供者执行可配置的 shell 命令来进行用户身份验证。两个环境变量 username
和 password
会被传递给命令。当命令成功退出(以退出代码 0)时,访问将被授予。
此提供者可用于将 Home Assistant 与任意外部认证服务集成,从明文数据库到 LDAP 再到 RADIUS。例如,与 LDAP 认证兼容的脚本是 这个
以下是一个配置示例:
homeassistant:
auth_providers:
- type: command_line
command: /absolute/path/to/command
# 可选,定义要传递给命令的参数列表。
#args: ["--first", "--second"]
# 取消注释以启用元变量解析(见下文)。
#meta: true
当 meta: true
在认证提供者的配置中设置时,您的命令可以将一些变量写入标准输出,以填充 Home Assistant 中创建的用户账户的额外数据。这些变量必须以以下形式打印:
name = John Doe
group = system-users
local_only = true
前后空格,以及以 #
开头的行将被忽略。以下变量是支持的。未来可能会添加更多。
-
name
: 用户在其个人资料中显示的真实姓名。 -
group
: 用户组使用值system-admin
表示管理员(这是默认值),或使用system-users
表示普通用户。 -
local_only
: 如果您将值设置为true
,则用户只能从本地网络登录。如果您未定义此变量,则用户可以从任何位置登录。
标准错误不被读取,直接传递给 Home Assistant 进程,因此您可以将其用于状态消息等。
任何前后空格会在用户名传递给配置的命令之前被去除。因此,“ hello ”将被重写为“hello”。
目前,元变量仅在第一次认证特定用户时被尊重。在后续对同一用户的身份验证中,将重用先前创建的用户对象及其旧值。