Перейти к содержанию

Аутентификация

Локальная аутентификация

Локальные учётные записи пользователей и группы могут быть созданы в InfraVision в разделе "Аутентификация" в меню "Админ". Этот раздел доступен только пользователям с включённым разрешением "staff".

Как минимум, каждая учётная запись пользователя должна иметь установленные имя пользователя и пароль. Учётные записи пользователей также могут указывать имя, фамилию и адрес электронной почты. Разрешения также могут быть назначены отдельным пользователям и/или группам по мере необходимости.

Удалённая аутентификация

InfraVision может быть настроен для обеспечения аутентификации пользователей через удалённый бэкенд в дополнение к локальной аутентификации. Это делается путём установки параметра конфигурации REMOTE_AUTH_BACKEND на подходящий класс бэкенда. InfraVision предоставляет несколько вариантов удалённой аутентификации.

Аутентификация LDAP

REMOTE_AUTH_BACKEND = 'netbox.authentication.LDAPBackend'

InfraVision включает бэкенд аутентификации, который поддерживает LDAP.

Аутентификация по HTTP-заголовку

REMOTE_AUTH_BACKEND = 'netbox.authentication.RemoteUserBackend'

Другой вариант удалённой аутентификации в InfraVision — включить назначение пользователя на основе HTTP-заголовка. Фронтенд HTTP-сервер (например, nginx или Apache) выполняет аутентификацию клиента как процесс, внешний по отношению к InfraVision, и передаёт информацию об аутентифицированном пользователе через HTTP-заголовки. По умолчанию пользователь назначается через заголовок REMOTE_USER, но это можно настроить с помощью параметра конфигурации REMOTE_AUTH_HEADER.

Опционально информация профиля пользователя может быть предоставлена заголовками REMOTE_USER_FIRST_NAME, REMOTE_USER_LAST_NAME и REMOTE_USER_EMAIL. Они сохраняются в профиле пользователя во время процесса аутентификации. Эти заголовки можно настроить так же, как и заголовок REMOTE_USER.

Внимание

Некоторые WSGI-серверы могут отбрасывать заголовки, содержащие неподдерживаемые символы. Например, gunicorn v22.0 и более поздние версии молча отбрасывают HTTP-заголовки, содержащие символы подчёркивания. Это поведение можно отключить, изменив настройку header_map gunicorn на dangerous.

Единый вход (SSO)

REMOTE_AUTH_BACKEND = 'social_core.backends.google.GoogleOAuth2'

InfraVision поддерживает аутентификацию единого входа через библиотеку python-social-auth. Чтобы включить SSO, укажите путь к нужному бэкенду аутентификации в пакете Python social_core. Пожалуйста, ознакомьтесь с полным списком поддерживаемых бэкендов аутентификации для доступных вариантов.

Большинство бэкендов удалённой аутентификации требуют дополнительной настройки через параметры с префиксом SOCIAL_AUTH_. Они будут автоматически импортированы из файла configuration.py InfraVision. Кроме того, конвейер аутентификации можно настроить через параметр SOCIAL_AUTH_PIPELINE. (Конвейер InfraVision по умолчанию определён в netbox/settings.py для справки.)

Настройка внешнего вида модуля SSO

Способ отображения бэкенда удалённой аутентификации пользователю на странице входа может быть настроен через параметр SOCIAL_AUTH_BACKEND_ATTRS, по умолчанию представляющий собой пустой словарь. Этот словарь сопоставляет имя модуля social_core (т.е. REMOTE_AUTH_BACKEND.name) с парой параметров (display_name, icon).

display_name — это имя, отображаемое пользователю на странице входа. Значок может быть либо URL-адресом значка; ссылаться на имя значка Material Design Icons; либо быть None для отсутствия значка.

Например, бэкенд OIDC может быть настроен следующим образом:

SOCIAL_AUTH_BACKEND_ATTRS = {
    'oidc': ("My awesome SSO", "login"),
}