认证提供者

Caution

这是一个高级功能。

当您登录时,一个 auth 提供者 检查您的凭据以确保您是授权用户。

配置认证提供者

Warning

Home Assistant 自动配置标准认证提供者,因此除非您配置多个认证提供者,否则您无需在您的 configuration.yamlconfiguration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中指定 auth_providers。指定 auth_providers 将禁用所有未列出的认证提供者,因此如果未正确配置,可能会降低安全性或导致登录困难。

如果您决定使用 trusted_networks 作为 auth_provider,则无法为您列出的受信任网络之外的设备进行身份验证。为了解决这个问题,请确保手动添加默认的 auth_provider,其类型为 homeassistant。这将在受信任网络身份验证失败时(正如您期望从您的本地网络以外访问时)向您呈现默认的身份验证登录界面。

认证提供者在您的 configuration.yamlconfiguration.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.yamlconfiguration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 中的条目:

homeassistant:
  auth_providers:
    - type: homeassistant

如果您在 configuration.yamlconfiguration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 文件中不指定任何 auth_providers 部分,则此提供者将自动设置。

受信任网络

受信任网络认证提供者定义了一系列 IP 地址,您无需进行身份验证(也称为“白名单”)。例如,您可以将本地网络白名单,这样当您在家中访问 Home Assistant 时,不会提示您输入密码。

当您从这些网络登录时,系统会询问您使用哪个用户账户,而您无需输入密码。

Note

如果您使用此认证提供者,则 多因素认证模块 不会参与登录过程。

Important

您不能信任您在任何 trusted_proxies 中使用的网络。trusted_networks 身份验证将失败,显示消息:您的计算机不被允许。

这是在 configuration.yamlconfiguration.yaml 文件是 Home Assistant 的主要配置文件。它列出了要加载的集成及其特定配置。在某些情况下,需要直接在 configuration.yaml 文件中手动编辑配置。大多数集成可以在 UI 中配置。 [Learn more] 中设置受信任网络的示例:

homeassistant:
  auth_providers:
    - type: trusted_networks
      trusted_networks:
        - 192.168.0.0/24
        - fd00::/8

Configuration Variables

trusted_networks list Required

您希望列入白名单的 IP 地址或 IP 网络的列表。它接受 IPv4 和 IPv6 IP 地址或网络

trusted_users map (Optional)

您还可以分配哪些用户可以在来自特定 IP 地址或网络的用户访问登录页面时进行选择。

USER_ID list | string (Optional)

该 IP 地址或网络可用进行选择的用户 ID 列表。

allow_bypass_login boolean (Optional, default: false)

如果您仅有一个用户可供选择,您可以绕过登录页面。

受信任用户示例

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

  1. 要找到用户 ID,请确保您的浏览器中 Home Assistant 的 URL 以 config/users/ 结尾。
    • 例如: homeassistant:8123/config/users
  2. 从列表中选择用户,并复制 ID。
    • 例如: acbbff56461748718f3650fb914b88c9
  3. trusted_users 配置不会验证用户的存在,因此请确保您输入了正确的用户 ID。
  4. 具有 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 命令来进行用户身份验证。两个环境变量 usernamepassword 会被传递给命令。当命令成功退出(以退出代码 0)时,访问将被授予。

此提供者可用于将 Home Assistant 与任意外部认证服务集成,从明文数据库到 LDAP 再到 RADIUS。例如,与 LDAP 认证兼容的脚本是 这个。请注意,这仅在使用 Home Assistant Core 安装类型时有效。

以下是一个配置示例:

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 进程,因此您可以将其用于状态消息等。

Note

任何前后空格会在用户名传递给配置的命令之前被去除。因此,“ hello ”将被重写为“hello”。

Note

目前,元变量仅在第一次认证特定用户时被尊重。在后续对同一用户的身份验证中,将重用先前创建的用户对象及其旧值。