Cинхронизация TTL пользовательских сессий c Idp (OpenID)

Последние изменения: 30.01.2026

Синхронизация

С 5.23.0 синхронизация пользовательских сессий идет с стороны стороннего idp, OpenId так как с стороны безопасности, это более корректный вариант контроля пользовательских сессий, из соответствующего инструмента, а не отдельного приложения.

Как это работает:

В ТестОпс есть client session ttl в конфигурации приложения и синхронизация параметра Idp
Если в ТестОпс прописано время жизни 1 час, а в Idp 10 минут - разлогин будет по правилу кейклоак.
Если в ТестОпс прописано 10 минут, а в Idp 1 час - разрыв пользовательской сессии будет произходить по правилу ТестОпс


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

https://help.qatools.ru/attachment/download/1dba55ca551487d0033a1306fa07482b/215149263/image.png

Важно, что token refresh настраивается на стороне провайдера, а не ТестОпс. 
Т.е. если токен приходит пустой от провайдера аутентификации - пользователя ТестОпс разлогинит.

Траблшутинг

Разлогин происходит спонтанно, в логе приложения появляются ошибки:

An error occurred while attempting to retrieve the OAuth 2.0 Access Token Response: I/O error on POST request for \"https://keycloak.platform.corp/realms/magnit/protocol/openid-connect/token\": PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Такое происходит если на стороне провайдера обновляется его сертификат, java об этом не узнает - ошибка валидации
Решение: подставить корневой сертификат в caserts

Отключение синхронизации


Синхронизацию можно отключить добавив параметр
SPRING_SECURITY_OAUTH2_TOKEN_REFRESH_ENABLED: "false"

https://help.qatools.ru/attachment/download/2dd13a7c04e2290768756baac216f978/215149264/image.png

Для хелм в values.yaml:

env:
      open:
              SPRING_SECURITY_OAUTH2_TOKEN_REFRESH_ENABLED: "false"

Помогла ли вам статья?