Это многостраничный печатный вид этого раздела. Нажмите что бы печатать.

Вернуться к обычному просмотру страницы.

Seccion

Режим Session в Authelia отвечает за управление сессионными куками, которые используются для авторизации пользователей на защищенных ресурсах.

Основная задача

Режим Session контролирует:

  • Создание и валидацию сессионных кук после успешной аутентификации.
  • Домены, для которых Authelia может выдавать авторизационные куки.
  • Параметры безопасности кук (время жизни, HTTPS-only, SameSite и др.).

1 - Конфигурация

Конфигурация

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 отдельным провайдером):

  1. Memory (по умолчанию, с состоянием, без дополнительной настройки)
  2. Redis (без состояния).
  3. Redis Sentinel (без статических данных, высокая доступность).

Опции

name

Значение имени по умолчанию для всех конфигураций cookies.

same_site

Значение same_site по умолчанию для всех конфигураций cookies.

inactivity

Значение бездействия по умолчанию для всех конфигураций cookies.

expiration

Значение срока действия по умолчанию для всех конфигураций cookies.

remember_me

Значение remember_me по умолчанию для всех конфигураций cookies.

cookies

Список определенных доменов cookie, которые Authelia настроена обрабатывать. Домены, не настроенные должным образом, будут автоматически отклоняться Authelia. Список позволяет администраторам определить несколько конфигураций доменов cookie сеанса с индивидуальными настройками.

domain

Домен, для защиты которого назначается сессионный 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 между этими доменами.

authelia_url

Это обязательный URL, который является корневым URL вашей установки Authelia для этого домена cookie, который может быть использован для создания соответствующего URL перенаправления, когда требуется аутентификация. Этот URL должен:

  • Уметь читать и записывать файлы cookie для настроенного домена.
  • Использовать схему https://.
  • Включать путь, если это необходимо (например, https://rabrain.ru/authelia, а не https://rabrain.ru, если вы используете опцию адреса сервера в authelia для указания подпути и если портал Authelia недоступен с https://rabrain.ru).

Соответствующий параметр запроса или заголовок для соответствующего прокси может отменить это поведение.

default_redirection_url

Это совершенно необязательный URL, который используется в качестве места перенаправления при прямом посещении Authelia. Эта опция отменяет глобальную опцию default_redirection_url.

name

Значение по умолчанию: Этот параметр принимает значение по умолчанию из настройки имени, приведенной выше.

Имя куки сеанса. По умолчанию устанавливается значение имени в основном разделе конфигурации сеанса.

same_site

Значение по умолчанию: Этот параметр принимает значение по умолчанию из настройки same_site, указанной выше.

Устанавливает значение cookies SameSite. До появления этого параметра по умолчанию было установлено значение None. Новое значение по умолчанию - Lax. Эта опция задается в нижнем регистре. Поэтому, например, если вы хотите установить значение Strict, то в конфигурации оно должно быть строгим.

Подробно о куках SameSite можно прочитать в MDN. Короче говоря, установка SameSite в значение Lax является наиболее предпочтительным вариантом для Authelia. None не рекомендуется, если только вы не знаете, что делаете, и не доверяете всем защищенным приложениям. Strict не будет работать во многих случаях, и мы не тестировали его в этом состоянии, но в любом случае он доступен как опция.

inactivity

Значение по умолчанию: Этот параметр принимает значение по умолчанию из настройки бездействия, приведенной выше.

Период времени, в течение которого пользователь может быть неактивен, пока сессия не будет уничтожена. Пригодится, если вам нужны длительные таймеры сеансов, но вы не хотите, чтобы неиспользуемые устройства были уязвимы.

expiration

Значение по умолчанию: Этот параметр принимает значение по умолчанию из настройки истечения срока действия, указанной выше.

Период времени до истечения срока действия cookie и уничтожения сессии. Это значение переопределяется параметром remember_me, если установлен флажок remember me.

remember_me

Значение по умолчанию: Этот параметр принимает значение по умолчанию из настройки remember_me, указанной выше.

Период времени до истечения срока действия куки и уничтожения сессии, когда установлен флажок remember me. Установка значения -1 полностью отключает эту функцию для данного домена сессионных cookie.

2 - Redis

Redis в Authelia решает ключевую проблему — делает систему статус-независимой (stateless) и обеспечивает высокую доступность (HA).

Проблема стандартного режима (In-Memory)

По умолчанию Authelia хранит сессии в оперативной памяти (in-memory). Это приводит к:

  • Потере сессий при перезагрузке Authelia.
  • Невозможности масштабирования (если запущено несколько экземпляров Authelia, сессии не синхронизируются).
  • Риску отказа — при падении сервера все пользователи разлогиниваются.

Как Redis решает эти проблемы?

Проблема Решение через 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

Опции

host

Хост redis или путь к сокету unix. Если используется буквенный адрес IPv6, он должен быть заключен в квадратные скобки и взят в кавычки:

host: '[fd00:1111:2222:3333::1]'

timeout

Таймаут соединения с Redis.

max_retries

Максимальное количество повторных попыток при неудачной команде. Установка этого параметра в 0 полностью отключает повторные попытки.

port

Порт, на котором прослушивается Redis.

username

Имя пользователя для аутентификации в redis. Поддерживается только в redis 6.0+, и в настоящее время redis предлагает обратную совместимость с аутентификацией только по паролю. Вероятно, вам не нужно задавать это значение, если вы не проходили через процесс настройки ACL redis.

password

Пароль для аутентификации в Redis.

Настоятельно рекомендуется, чтобы это была случайная буквенно-цифровая строка из 64 или более символов, и пароль пользователя был изменен на это значение.

database_index

Номер индекса базы данных redis, то же значение, что и в команде redis SELECT.

maximum_active_connections

Максимальное количество соединений, открытых к redis в одно и то же время.

minimum_idle_connections

Минимальное количество соединений redis, которые следует держать открытыми, пока они не превышают максимальное количество активных соединений. Это полезно, если возникают большие задержки при установлении соединений.

tls

Если определено, включает соединение через TLS-сокет и дополнительно управляет параметрами проверки TLS-соединения для сервера redis.

По умолчанию Authelia использует системный сертификат доверия для проверки TLS-соединений, а глобальная опция certificates_directory может быть использована для дополнения этого параметра.

high_availability

При определении этой сессии включается соединение с redis sentinel. Возможно, в будущем мы добавим кластер redis.

sentinel_name

Имя ведущего сервера redis sentinel. Оно задается в конфигурации redis sentinel, это не имя хоста. Для конфигурации высокой доступности оно должно быть определено в данный момент.

sentinel_username

Имя пользователя для подключения к Redis Sentinel. Если оно указано, оно будет использоваться вместе с паролем sentinel_password для аутентификации на основе ACL для Redis Sentinel. Если указан только пароль, соединение с Redis Sentinel будет аутентифицировано с помощью традиционной аутентификации requirepass.

sentinel_password

Пароль для подключения к Redis Sentinel. Если указан с именем sentinel_username, Authelia настраивает аутентификацию на Redis Sentinel с помощью аутентификации на основе ACL. В противном случае используется аутентификация по requirepass.

Настоятельно рекомендуется, чтобы это была случайная буквенно-цифровая строка из 64 или более символов, и пароль пользователя был изменен на это значение.

nodes

Список узлов redis sentinel для балансировки нагрузки. Этот список добавляется к хосту в разделе redis выше. Необходимо определить либо хост redis, либо один сентинел-узел redis. Хост redis должен быть узлом redis sentinel, а не обычным узлом. Отдельные узлы redis определяются с помощью команд redis sentinel.

- host: redis-sentinel-0
  port: 26379
host

Хост этого узла redis sentinel.

port

Порт этого узла redis sentinel.

route_by_latency

Приоритет отдается узлам redis sentinel с низкой задержкой, если установлено значение true.

route_randomly

Случайным образом выбирает узлы redis sentinel, если установлено значение true.