Основная задача
Режим Session контролирует:
- Создание и валидацию сессионных кук после успешной аутентификации.
- Домены, для которых Authelia может выдавать авторизационные куки.
- Параметры безопасности кук (время жизни, HTTPS-only, SameSite и др.).
Это многостраничный печатный вид этого раздела. Нажмите что бы печатать.
session:
secret: 'insecure_session_secret'
name: 'authelia_session'
same_site: 'lax'
inactivity: '5m'
expiration: '1h'
remember_me: '1M'
cookies:
- domain: 'rabrain.ru'
authelia_url: 'https://auth.rabrain.ru'
default_redirection_url: 'https://www.rabrain.ru'
name: 'authelia_session'
same_site: 'lax'
inactivity: '5m'
expiration: '1h'
remember_me: '1d'
session:
secret: 'insecure_session_secret'
name: 'authelia_session'
same_site: 'lax'
inactivity: '5m'
expiration: '1h'
remember_me: '1M'
cookies:
- domain: 'rabrain.ru'
authelia_url: 'https://auth.rabrain.ru'
default_redirection_url: 'https://www.rabrain.ru'
name: 'authelia_session'
same_site: 'lax'
inactivity: '5m'
expiration: '1h'
remember_me: '1d'
В настоящее время существует два провайдера для хранения сессий (три, если считать Redis Sentinel отдельным провайдером):
Важно отметить, что при выборе провайдера не рекомендуется использовать провайдеров с функцией stateless в сценариях High Availability, таких как Kubernetes. Рядом с каждым провайдером есть примечание, указывающее, является ли он государственным или нестационарным, рекомендуется использовать нестационарные провайдеры.
Значение имени по умолчанию для всех конфигураций cookies.
Значение same_site
по умолчанию для всех конфигураций cookies.
Значение бездействия по умолчанию для всех конфигураций cookies.
Значение срока действия по умолчанию для всех конфигураций cookies.
Значение remember_me по умолчанию для всех конфигураций cookies.
Список определенных доменов cookie, которые Authelia настроена обрабатывать. Домены, не настроенные должным образом, будут автоматически отклоняться Authelia. Список позволяет администраторам определить несколько конфигураций доменов cookie сеанса с индивидуальными настройками.
Домен, для защиты которого назначается сессионный cookie. Он должен совпадать с доменом, на котором обслуживается Authelia, или корнем домена, и, следовательно, если настроен authelia_url, должен иметь возможность читать и записывать куки для этого домена.
Например, если Authelia доступна по URL https://auth.rabrain.ru, домен должен быть либо auth.rabrain.ru, либо rabrain.ru.
Значение не должно совпадать с доменом из списка публичных суффиксов, поскольку браузеры не разрешают веб-сайтам записывать файлы cookie для таких доменов. Это касается большинства служб динамического DNS, таких как duckdns.org. Вы должны использовать свой домен вместо duckdns.org для этого значения, например example.duckdns.org.
Следовательно, если у вас есть example.duckdns.org и example-auth.duckdns.org, вы не сможете обмениваться файлами cookie между этими доменами.
Это обязательный URL, который является корневым URL вашей установки Authelia для этого домена cookie, который может быть использован для создания соответствующего URL перенаправления, когда требуется аутентификация. Этот URL должен:
Соответствующий параметр запроса или заголовок для соответствующего прокси может отменить это поведение.
Это совершенно необязательный URL, который используется в качестве места перенаправления при прямом посещении Authelia. Эта опция отменяет глобальную опцию default_redirection_url.
Значение по умолчанию: Этот параметр принимает значение по умолчанию из настройки имени, приведенной выше.
Имя куки сеанса. По умолчанию устанавливается значение имени в основном разделе конфигурации сеанса.
Значение по умолчанию: Этот параметр принимает значение по умолчанию из настройки same_site, указанной выше.
Устанавливает значение cookies SameSite. До появления этого параметра по умолчанию было установлено значение None. Новое значение по умолчанию - Lax. Эта опция задается в нижнем регистре. Поэтому, например, если вы хотите установить значение Strict, то в конфигурации оно должно быть строгим.
Подробно о куках SameSite можно прочитать в MDN. Короче говоря, установка SameSite в значение Lax является наиболее предпочтительным вариантом для Authelia. None не рекомендуется, если только вы не знаете, что делаете, и не доверяете всем защищенным приложениям. Strict не будет работать во многих случаях, и мы не тестировали его в этом состоянии, но в любом случае он доступен как опция.
Значение по умолчанию: Этот параметр принимает значение по умолчанию из настройки бездействия, приведенной выше.
Период времени, в течение которого пользователь может быть неактивен, пока сессия не будет уничтожена. Пригодится, если вам нужны длительные таймеры сеансов, но вы не хотите, чтобы неиспользуемые устройства были уязвимы.
Значение по умолчанию: Этот параметр принимает значение по умолчанию из настройки истечения срока действия, указанной выше.
Период времени до истечения срока действия cookie и уничтожения сессии. Это значение переопределяется параметром remember_me, если установлен флажок remember me.
Значение по умолчанию: Этот параметр принимает значение по умолчанию из настройки remember_me, указанной выше.
Период времени до истечения срока действия куки и уничтожения сессии, когда установлен флажок remember me. Установка значения -1 полностью отключает эту функцию для данного домена сессионных cookie.
По умолчанию Authelia хранит сессии в оперативной памяти (in-memory). Это приводит к:
Проблема | Решение через Redis |
---|---|
Потеря сессий при перезагрузке | Сессии хранятся на внешнем сервере и сохраняются после рестарта |
Несколько экземпляров Authelia | Все ноды читают/пишут сессии в единое хранилище |
Высокая нагрузка | Redis оптимизирован для частых операций чтения/записи |
session:
redis:
host: '127.0.0.1'
port: 6379
timeout: '5s'
max_retries: 0
username: 'authelia'
password: 'authelia'
database_index: 0
maximum_active_connections: 8
minimum_idle_connections: 0
tls:
server_name: 'myredis.rabrain.ru'
skip_verify: false
minimum_version: 'TLS1.2'
maximum_version: 'TLS1.3'
certificate_chain: |
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----
private_key: |
-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----
high_availability:
sentinel_name: 'mysentinel'
# If `sentinel_username` is supplied, Authelia will connect using ACL-based
# authentication. Otherwise, it will use traditional `requirepass` auth.
sentinel_username: 'sentinel_user'
sentinel_password: 'sentinel_specific_pass'
nodes:
- host: 'sentinel-node1'
port: 26379
- host: 'sentinel-node2'
port: 26379
route_by_latency: false
route_randomly: false
Хост redis или путь к сокету unix. Если используется буквенный адрес IPv6, он должен быть заключен в квадратные скобки и взят в кавычки:
host: '[fd00:1111:2222:3333::1]'
Таймаут соединения с Redis.
Максимальное количество повторных попыток при неудачной команде. Установка этого параметра в 0 полностью отключает повторные попытки.
Порт, на котором прослушивается Redis.
Имя пользователя для аутентификации в redis. Поддерживается только в redis 6.0+, и в настоящее время redis предлагает обратную совместимость с аутентификацией только по паролю. Вероятно, вам не нужно задавать это значение, если вы не проходили через процесс настройки ACL redis.
Пароль для аутентификации в Redis.
Настоятельно рекомендуется, чтобы это была случайная буквенно-цифровая строка из 64 или более символов, и пароль пользователя был изменен на это значение.
Номер индекса базы данных redis, то же значение, что и в команде redis SELECT.
Максимальное количество соединений, открытых к redis в одно и то же время.
Минимальное количество соединений redis, которые следует держать открытыми, пока они не превышают максимальное количество активных соединений. Это полезно, если возникают большие задержки при установлении соединений.
Если определено, включает соединение через TLS-сокет и дополнительно управляет параметрами проверки TLS-соединения для сервера redis.
По умолчанию Authelia использует системный сертификат доверия для проверки TLS-соединений, а глобальная опция certificates_directory может быть использована для дополнения этого параметра.
При определении этой сессии включается соединение с redis sentinel. Возможно, в будущем мы добавим кластер redis.
Имя ведущего сервера redis sentinel. Оно задается в конфигурации redis sentinel, это не имя хоста. Для конфигурации высокой доступности оно должно быть определено в данный момент.
Имя пользователя для подключения к Redis Sentinel. Если оно указано, оно будет использоваться вместе с паролем sentinel_password для аутентификации на основе ACL для Redis Sentinel. Если указан только пароль, соединение с Redis Sentinel будет аутентифицировано с помощью традиционной аутентификации requirepass.
Пароль для подключения к Redis Sentinel. Если указан с именем sentinel_username, Authelia настраивает аутентификацию на Redis Sentinel с помощью аутентификации на основе ACL. В противном случае используется аутентификация по requirepass.
Настоятельно рекомендуется, чтобы это была случайная буквенно-цифровая строка из 64 или более символов, и пароль пользователя был изменен на это значение.
Список узлов redis sentinel для балансировки нагрузки. Этот список добавляется к хосту в разделе redis выше. Необходимо определить либо хост redis, либо один сентинел-узел redis. Хост redis должен быть узлом redis sentinel, а не обычным узлом. Отдельные узлы redis определяются с помощью команд redis sentinel.
- host: redis-sentinel-0
port: 26379
Хост этого узла redis sentinel.
Порт этого узла redis sentinel.
Приоритет отдается узлам redis sentinel с низкой задержкой, если установлено значение true.
Случайным образом выбирает узлы redis sentinel, если установлено значение true.