Как я уже написал, сервер передает клиенту куки с пометкой HTTP only. То есть клиент их вообще никак не трогает. Они хранятся во внутреннем хранилище браузера, куда клиенту доступа нет. Но если клиент посылает запрос на сервер, то браузер эти куки включает в запрос, автоматически.
Куки нужны только затем, чтобы удостовериться, что access token не украден (если кто-то его украдет и попытается зайти на сервер с ним, то куки он все равно своровать не сможет - именно для этого у них стоит флаг HTTP only).
Вообще клиент с токенами практически не работает. Задача клиента проста - если сервер авторизовал запрос и вернул пару токенов, то надо эти токены сохранить, и включать их в последующие запросы к серверу (оба, или только access token). Всё! Вся забота о валидности токенов, проверка на соответствие токенов кукам и т.п. -- это головная боль сервера.
Islam Ibakaev: "А если он поместит токен в куки и уже потом сделает запрос, тогда получается что всё у него прокатит?"
Я собственно поэтому и сделал акцент на этом:
"Любой запрос от клиента, содержащий access token, считается авторизованным только если в нем есть соответсвующие токену куки (не совпадающие, а соответствующие, то есть закодированные по какому-то алгоритму с access token в качестве базы)."
То есть в куках мы записываем не тупо access token, а например, другой JWT-токен, у которого в payload стоит md5-хэш от access token. Поскольку этот токен подписан на сервере, то подделывать его бесполезно, и подмена его на access token ничего не даст.
davidnum95: Нет. Если человек авторизовался с другого браузера, то для него генерится новый access token. Вместе с ним создается новый refresh token и новые куки, которые и отдаются этому браузеру.
Старые куки и старый токен при этом продолжают работать.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.
Как я уже написал, сервер передает клиенту куки с пометкой HTTP only. То есть клиент их вообще никак не трогает. Они хранятся во внутреннем хранилище браузера, куда клиенту доступа нет. Но если клиент посылает запрос на сервер, то браузер эти куки включает в запрос, автоматически.
Куки нужны только затем, чтобы удостовериться, что access token не украден (если кто-то его украдет и попытается зайти на сервер с ним, то куки он все равно своровать не сможет - именно для этого у них стоит флаг HTTP only).
Вообще клиент с токенами практически не работает. Задача клиента проста - если сервер авторизовал запрос и вернул пару токенов, то надо эти токены сохранить, и включать их в последующие запросы к серверу (оба, или только access token). Всё! Вся забота о валидности токенов, проверка на соответствие токенов кукам и т.п. -- это головная боль сервера.