Настройка времени жизни сессий OpenID

Проверяйте валидность сессии вашего пользователя в OAuth

В МТС Линк есть функционал, позволяющий проверять валидность сессии вашего пользователя в OAuth и автоматически закрывать ему доступ к личному кабинету, например, если у него была скомпрометирована или удалена учётная запись в KeyCloak. Для этого используется механика refresh token.

Для того, чтобы не заставлять пользователя повторно авторизовываться, и в то же время обеспечить актуальность его сессии и предотвращать несанкционированный доступ удалённых сотрудников, нужно правильно настроить работу с токенами:

1. Убедитесь, что флаг «Use refresh tokens» включён на вкладке «Advanced» в настройке клиента.

image.png

2. Далее в этой же вкладке в разделе «Advanced settings» обратите внимание на два поля: Client Offline Session Idle и Client Offline Session Max.

image 2.png


Первый параметр отвечает за период, в течение которого пользователь будет считаться активным — если установить это значение слишком малым, сессия инвалидируется слишком быстро. Пример: если установить значение 1 день, то спустя 1 день неактивности пользователю придётся заново авторизоваться на платформе.

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

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

image 3.png

Устанавливайте эти настройки, балансируя между удобством пользователей и соображениями защиты информации.

3. В настройках реалма также есть конфигурация Refresh tokens во вкладке Tokens. Нужно включить ротацию ключей, чтобы была возможность продлевать сессию пользователя бесконечно без разлогинов. Иначе токен истечёт в соответствие значению параметра Client Offline Session Idle, если он указан. Параметр Refresh Token Max reuse желательно установить в 1-2, чтобы избежать ситуации гонки между запросами, которые могут быть отправлены в Keycloak одновременно.

image 4.png


👆 На этом пока всё