Браузер не отправляет cookie access token при запросах на бэк. Как можно это исправить?
Всем доброго времени суток. Я пишу планировщик задач в качестве петс-проекта. Бэк на SpringBoot, а фронт на React (проект создавал через create-react-app).
Я пытался реализовать следующий механизм аутентификации: Пользователь логинится в систему по логину + паролю -> сервер формирует JWT и передает его с ответом -> фронт с каждым запросом отправляет этот JWT.
JWT передается куком, который можно считать только на сервере (httpOnly). Ниже приведу параметры кука:
public HttpCookie createCookie(String jwt){
return ResponseCookie
//настройки кука
.from(cookieJwtName, jwt)
.maxAge(cookieAccessTokenDuration)
.sameSite(SameSiteCookies.STRICT.getValue())
.httpOnly(true)
.secure(true)
.domain(cookieAccessTokenDomain)
.path("/")
.build();
}
Проблема заключается в том, что браузер не передает JWT на бэк при последующих запросах, после логина (хотя насколько я понимаю он должен делать это автоматически).
В консоли ругается на CORS, хотя домен и хост прописаны в настройках на бэке. Фронт запускается на https://localhost:3000 Бэк на https://localhost:8081
Сертификаты делал сам через KeyStore Explorer.
При этом если на сервере делаю проверку не на JWT, а на наличие аутентификации в SecurityContextHolder: SecurityContextHolder.getContext().getAuthentication(), то все запросы корректно работают. НО - мне хотелось бы реализовать автологин (чтобы при перезагрузке страницы на сервер отправлялся JWT и по нему возвращались данные пользователя (чтобы страница не падала при обновлении). А этот метод не работает, так как браузер не отправляет токен.
Ниже также приведу конфигурационные параметры jwt, которые установлены на бэке:
jwt.access_token_expiration = 86400000
jwt.reset_pass_expiration = 300000
cookie.jwt.max-age = 86400
cookie.jwt.name = access_token
server.domain =localhost