Бэкэнд для авторизации пользователей¶
Watcher может проверять логин и пароль через внешний HTTP-бэкенд. Укажите его HTTPS-адрес в поле внешней аутентификации в Настройках. В API настроек это поле auth.external_auth.

Адрес внешнего обработчика в настройках аутентификации.
Бэкенд отвечает только за проверку учетных данных. Организации и доступ к камерам настройте в Watcher. Успешный ответ бэкенда может создать отсутствующую учетную запись, но не назначает ей организационные права и административную роль.
При входе с логином и паролем Watcher выполняет GET к указанному адресу, добавляя параметры login и password. Например:
GET /auth?login=resident-example&password=ExamplePassword
Параметры кодируются как query string. Используйте HTTPS и исключите пароль из журналов запросов внешнего сервиса и его прокси.
Результат зависит от HTTP-статуса:
- 200 — учетные данные приняты. Watcher создает пользователя, если его нет, либо обновляет локальный хэш пароля существующего пользователя.
- 403 — учетные данные отклонены. Для существующего пользователя локальный хэш заменяется недействительным значением; вход с прежним локальным паролем после этого не пройдет.
- Другой статус, включая
404, — Watcher проверяет логин и пароль по локальной базе. - Ошибка соединения или таймаут — Watcher также использует локальную базу. Таймаут HTTP-запроса — две секунды.
Внешний отказ не меняет поле disabled. Административно отключенный пользователь не может войти даже после успешного ответа бэкенда.
Если внешний сервис недоступен, локальная проверка использует последний успешно сохраненный пароль. После успешной внешней проверки пароль в Watcher обновляется. Смену пароля при такой интеграции организуйте во внешней системе, иначе следующий успешный вход через бэкенд заменит локальный пароль.
Примеры запросов¶
Проверьте контракт внешнего обработчика отдельно от Watcher. Укажите тестового пользователя и не выводите пароль в журнал:
curl --silent --output /dev/null --write-out '%{http_code}\n' \
--get 'https://auth.example.com/auth' \
--data-urlencode 'login=resident-example' \
--data-urlencode 'password=ExamplePassword'
Для разрешенного входа ожидается 200, для явного отказа — 403. Затем выполните вход в Watcher через интерфейс или POST /watcher/client-api/v3/login с Basic-авторизацией и проверьте доступ к заранее назначенным камерам.
При проверке отказоустойчивости отдельно отключите доступ к тестовому бэкенду и убедитесь, что локальный пароль дает ожидаемый результат. Проверяйте также неверный пароль: ответ 404 внешнего сервиса включает локальную проверку и не равнозначен запрету.