У нас есть сервер аутентификации OAuth2, созданный с использованием Spring Security OAuth2 и Spring Boot.
Мы используем неявный поток OAuth2 в нашем веб-приложении для аутентификации на этом сервере.Он работает следующим образом:
Веб-приложение отправляет информацию для входа на сервер аутентификации и возвращает токен JWT и файл cookie сеанса.В веб-приложении токен JWT используется для связи с другими службами, а cookie-файл сеанса - только для сохранения сеанса на сервере аутентификации.
Токен JWT имеет ограниченную допустимость, поэтому пользователь может сохранить его.После входа в систему веб-приложение периодически вызывает /oauth/authorize?response_type=token
на сервере авторизации, чтобы получить новый токен JWT до истечения срока действия старого.Вот почему веб-приложение должно иметь действительный сеанс.
Проблема заключается в том, что при вызове oauth/authorize
на сервере авторизации срок действия сеанса автоматически продлевается (я вижуэто в БД, потому что данные сеанса хранятся через JDBC), но срок действия cookie сеанса не.Это означает, что когда срок действия файла cookie сеанса истекает, веб-приложение теряет сеанс и больше не может получить новый токен JWT.
Мы ожидаем, что вызов oauth/authorize
вернет заголовок set cookie
, который расширитсясрок действия файла cookie сеанса.
У меня есть 2 вопроса:
Должно ли это работать таким образом или у нас неверные предположения?(То есть, должен ли вызов oauth authorize
продлить сеансовый файл cookie в соответствии со стандартом неявного потока oauth2?
Если это должно работать таким образом, что может помешать безопасности Spring продлитьcookie?