Есть API для многоплатформенного приложения.Доступ к большей части функциональности требует авторизации.Авторизация основана на токенах JWT.Рабочий процесс выглядит примерно так:
Первый шаг. Клиент отправляет свои учетные данные в теле POST-запроса на /user/authenticate/
.Если учетные данные верны, сервер ответит парой JWT-токенов.Они хранятся в теле ответа:
{
"access": "eyJ0eXAiOiJKV1Q.LCJleHAiOiIxNC4wMi4yMDE5IDE1OjEx.lUPAKbdYwkRt3vMBY",
"refresh": "eyJ0eXAiOiJKV1Q.iwiZXhwIjoiMTQuMDMuMjAxOSAxNDo0M.iidNaxbMflEadVSS"
}
Дальнейшие шаги. Жетоны, полученные на первом шаге, сохраняются на стороне клиента.Когда клиент отправляет запрос на сервер, access token
добавляется к заголовкам запроса.Заголовок выглядит так:
Authorization: Bearer eyJ0eXAiOiJKV1Q.LCJleHAiOiIxNC4wMi4yMDE5IDE1OjEx.lUPAKbdYwkRt3vMBY
Обновление токенов. Все остается прежним, пока не истечет время истечения токена.Когда клиент решает обновить токены, он должен отправить POST-запрос на /user/extend-token/
.Для получения свежей пары токенов клиент должен предоставить действительный refresh token
.
Вопрос в том, где следует хранить refresh token
во время процесса транспортировки к серверу: в теле запроса (так же, как учетные данные с первого шага) или в заголовках (как, например,access token
в обычном запросе к API)?