Содержание
На данный момент Home Assistant «из коробки» не поддерживает внешний OIDC (кроме использования платных решений Nabu Casa или сложных прокси-схем с заголовками). Компонент hass-oidc-auth решает проблему, позволяя подключить HA к вашему центральному Identity Provider (IdP), например Authentik, Keycloak, Authelia или Pocket ID.
Ключевые возможности
- SSO (Single Sign-On): Единый вход во все сервисы умного дома.
- Управление ролями: Автоматическое назначение прав администратора или пользователя в HA на основе групп в вашем IdP.
- Provisioning: Автоматическое создание пользователей и сущностей
Personпри первом входе. - Связывание аккаунтов: Возможность миграции существующих локальных пользователей HA на OIDC-аккаунты.
Важно: Проект находится в стадии Alpha. Разработчик предупреждает о возможных ошибках, поэтому использование в критически важных (production) средах требует осторожности.
Установка
Установка выполняется стандартно через HACS (Home Assistant Community Store):
- Откройте HACS -> Integrations.
- Добавьте пользовательский репозиторий:
christiaangoossens/hass-oidc-auth. - Установите интеграцию «OpenID Connect».
- Перезагрузите Home Assistant.
После установки настройка производится только через YAML.
Настройка (Configuration)
Конфигурация добавляется в файл configuration.yaml. Компонент поддерживает два режима работы клиента: Public (рекомендуемый для большинства) и Confidential.
1. Базовая конфигурация (Public Client)
Этот вариант проще и безопаснее для статических конфигов, так как не требует хранения секрета клиента.
|
1 2 3 4 5 |
auth_oidc: client_id: "home-assistant" # ID, который вы создали в Authentik/Keycloak discovery_url: "https://auth.example.com/application/o/home-assistant/.well-known/openid-configuration" display_name: "Войти через Authentik" # Надпись на кнопке входа |
- discovery_url: Ссылка на автоконфигурацию провайдера. Обычно заканчивается на
.well-known/openid-configuration. - Callback URL: При настройке провайдера (IdP) укажите Redirect URI в формате:
https://<ВАШ_HA_URL>/auth/oidc/callback
2. Конфигурация с секретом (Confidential Client)
Если ваш IdP требует client secret (например, некоторые настройки Keycloak), добавьте его через secrets:
|
1 2 3 4 5 |
auth_oidc: client_id: "home-assistant" client_secret: !secret oidc_client_secret discovery_url: "..." |
3. Управление ролями (RBAC)
Вы можете управлять правами доступа внутри Home Assistant, используя группы из вашего IdP.
|
1 2 3 4 5 6 |
auth_oidc: # ... базовые настройки ... roles: admin: "ha_admins" # Пользователи из этой группы IdP станут админами в HA user: "ha_users" # Обязательная группа для обычного доступа |
Если параметр roles.user задан, пользователи без этой группы не смогут войти. Если не задан — пускает всех аутентифицированных.
4. Кастомный маппинг полей (Claims)
Если ваш провайдер отдает нестандартные поля (например, sAMAccountName вместо preferred_username), их можно переназначить:
|
1 2 3 4 5 6 |
auth_oidc: claims: username: "uid" # Поле логина display_name: "fullName" # Поле отображаемого имени groups: "roles" # Поле, где лежат группы пользователя |
Продвинутые сценарии
Миграция существующих пользователей
Если у вас уже есть настроенные пользователи в HA и вы хотите переключить их на SSO без потери истории и настроек дашбордов, используйте функцию автоматического связывания.
- Включите опцию временно:
1234auth_oidc:features:automatic_user_linking: true - Убедитесь, что
usernameв IdP совпадает сusernameв Home Assistant. - Выполните вход через OIDC. Система свяжет внешнюю учетку с локальной.
- Важно: После миграции отключите эту опцию (
false), так как она игнорирует локальный MFA и может быть небезопасна при совпадении имен.
Работа с самоподписанными сертификатами (Self-Hosted Lab)
Если ваш Authentik/Keycloak работает по HTTPS с самоподписанным сертификатом или CA локальной лаборатории, HA может выдавать ошибку SSL: CERTIFICATE_VERIFY_FAILED.
Решение 1 (Правильное): Указать путь к CA сертификату.
|
1 2 3 4 |
auth_oidc: network: tls_ca_path: /config/my-local-ca.pem |
Решение 2 (Тестовое, небезопасно): Отключить проверку TLS.
|
1 2 3 4 |
auth_oidc: network: tls_verify: false |
Использование
Вход в систему
После настройки и перезагрузки, на странице входа Home Assistant может не появиться кнопка OIDC сразу (зависит от версии фронтенда и кэша).
- Для инициализации входа используйте специальный URL:
https://<ВАШ_HA_URL>/auth/oidc/welcome
или
https://<ВАШ_HA_URL>/auth/oidc/login(для прямого редиректа). - После первого входа интеграция попытается внедрить JS-код, чтобы добавить кнопку «Войти через OIDC» на стандартный экран логина HA.
Создание пользователей
По умолчанию, если пользователь входит через OIDC и его нет в базе HA:
- Создается новый системный пользователь.
- Автоматически создается сущность «Человек» (
Person), привязанная к этому пользователю (можно отключить черезfeatures.automatic_person_creation: false).
Пример для Authentik
Для Authentik конфигурация со стороны HA минимальна, так как он хорошо поддерживает стандарты:
|
1 2 3 4 5 6 |
auth_oidc: client_id: "ha-client" discovery_url: "https://authentik.lan/application/o/home-assistant/.well-known/openid-configuration" roles: admin: "Admins" # Группа в Authentik |
В самом Authentik нужно создать Provider типа «OAuth2/OpenID Provider» и Application, привязанный к нему.
Читайте про локальные умные дома:
🌐 Сайт
📱 Телеграм
📰 Дзен

