Сервер аутентификации (authn-server)

О сервисе

Параметр Значение
Системное название chart shturval-auth
Компонент sh-authn
Назначение в кластере OIDC/OAuth2, интерактивный вход, logout, выдача и отзыв токенов, JWKS, работа с session cookie.
Критический Да
Неймспейс shturval-backend

authn-server входит в Helm chart shturval-auth. В этом же chart разворачиваются auth-controller, session-manager и ldap-cache.

Содержание

  1. Обзор
  2. Архитектура
  3. Установка / развёртывание
  4. Диагностика
  5. Жизненный цикл
  6. Параметры сервиса

1. Обзор

Назначение: обслуживать браузерные и программные сценарии аутентификации платформы: discovery OIDC (/.well-known/openid-configuration), login/logout, выдачу и аннулирование кодов и токенов, JWKS, пользовательский cookie sh_session_id, а также наблюдение за конфигурацией OAuth-клиентов и провайдеров идентичности.

Функции

Контур Назначение
Login / logout Браузерные сценарии и redirect login.
OAuth2 endpoint authorize, token, introspect, revoke, user info.
Session store Серверное состояние пользовательских сессий.
Client watcher Поддержание актуального каталога OIDC-клиентов из AuthOidcClient.
LDAP / external IdP Обновление конфигурации из Secret платформы.

Сценарии инициации

Событие Инициатор Эффект
Пользователь выполняет login Браузер или клиент Выдаются cookie и токены согласно политике релиза.
Изменён AuthOidcClient Kubernetes watcher Обновляется набор OAuth-клиентов в памяти сервиса.
Изменён Secret конфигурации LDAP / IdP Администратор платформы Обновляются параметры авторизации.
Readiness проба kubelet /readyz проверяет доступность связанных хранилищ.

Ограничения и следствия

Ограничение Следствие
Файловый ключ JWT ищется в рабочем каталоге Контейнер должен получать файл private.pem через volume mount.
Имя cookie sh_session_id фиксировано кодом версии продукта Его нельзя переименовать через обычную конфигурацию.
Endpoint corp root CA требует /shturval/corp-root-ca.crt При использовании сценария обеспечьте mount сертификата.
Без TOKEN_STORE_ADDR и SESSION_STORE_ADDR возможен режим памяти Для нескольких pod используйте внешние Redis-хранилища.

Место в цепочке управления

authn-server получает OAuth-клиенты из AuthOidcClient, которые согласует auth-controller. Сессии пользователей создаются authn-server и затем доступны для просмотра и удаления через session-manager. Для LDAP-сценариев конфигурация каталога также используется ldap-cache.

Ключевые характеристики

Характеристика Значение
Бинарь sh-authn
Порт процесса PORT, по умолчанию 8081
Размещение Шаблон helm/auth/templates/dep-authn.yaml, совместный pod с sh-session-manager
Хранилища Redis или in-memory режим, если адреса store не указаны

2. Архитектура

Компонент Роль
sh-authn Маршрутизация HTTP endpoint OIDC/OAuth2.
Token store backend Хранение OAuth-кодов, access token и refresh token.
Session store backend Серверное состояние пользовательских сессий.
Kubernetes watchers Наблюдение за CR клиентов и Secret LDAP / IdP.
sh-session-manager API для списков и очистки сессий, вызываемый backend.

3. Установка / развёртывание

Сервис управляется Helm chart shturval-auth. Для многоподовой эксплуатации включите удалённые Redis store для токенов и сессий; иначе записи в памяти разных pod не будут согласованы.

Параметры меняются через ShturvalServicePatch (SSP) для SSC shturval-auth.

4. Диагностика

kubectl get pods -n "${NAMESPACE}" -o wide
kubectl logs -n "${NAMESPACE}" "${POD}" -c sh-authn --tail=300
kubectl logs -n "${NAMESPACE}" "${POD}" -c sh-session-manager --tail=150

Подставьте POD по фактической установке.

Симптом Возможная причина Действие
Login ломается в multi-pod режиме Недоступен Redis Проверить SESSION_STORE_ADDR и TOKEN_STORE_ADDR.
Readiness всегда false Недоступно одно из хранилищ Проверить ошибки журнала и credentials в Secret.
OAuth-клиенты не авторизуют запросы AuthOidcClient не согласован Проверить статус ресурсов auth-operator.

5. Жизненный цикл

Шаг Участник Результат
1 Ingress / LB Вход на pod.
2 Маршрутизатор процесса Выбор нужного OAuth/OIDC handler.
3 Store / watchers Чтение валидируемых объектов авторизации из памяти и хранилищ.
4 Ответ клиенту Redirect, JSON JWKS или token payload.

Stateful reconcile не применяется: сервис обрабатывает HTTP-запросы и события watchers.

6. Параметры сервиса

Переменная Назначение
PORT Порт процесса, по умолчанию 8081.
KEY_ID, ISSUER, TOKEN_URL, AUTH_URL Метаданные OIDC процесса подписания.
AT_EXP, RT_EXP, GEN_RT Политики сроков действия token и refresh token.
SESSION_STORE_ADDR, TOKEN_STORE_ADDR Переключают режим памяти на Redis при заданном адресе.
COOKIE_DOMAIN Область браузерной cookie.
USE_BOOTSTRAP_HOST_AS_ISSUER Поведение bootstrap HTTP.
POD_NAMESPACE Namespace наблюдения Secret и CR.

Для production окружения проверьте mount private.pem, CA bundle и доступность Redis.