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

О сервисе

ПараметрЗначение
Системное название chartshturval-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 endpointauthorize, token, introspect, revoke, user info.
Session storeСерверное состояние пользовательских сессий.
Client watcherПоддержание актуального каталога OIDC-клиентов из AuthOidcClient.
LDAP / external IdPОбновление конфигурации из Secret платформы.

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

СобытиеИнициаторЭффект
Пользователь выполняет loginБраузер или клиентВыдаются cookie и токены согласно политике релиза.
Изменён AuthOidcClientKubernetes 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-managerAPI для списков и очистки сессий, вызываемый 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. Жизненный цикл

ШагУчастникРезультат
1Ingress / LBВход на pod.
2Маршрутизатор процессаВыбор нужного OAuth/OIDC handler.
3Store / 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_NAMESPACENamespace наблюдения Secret и CR.

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