Можно ли отправить httponly cookie c domain.com на api.domain.com без выставленной опции SameSite=none, если получили мы куку на api.domain.com?
Очень извиняюсь за такую дикую формулировку, пытался уместить все в один вопрос. Не понял сделать безопасно, и так:
У меня ui на domain.zone и API на api.domain.zone UI использует axios Когда пользователь вводит код (UI c domain.zone) и JS отправляет запрос на api.domain.zone, и код правильный - получает httponly куку (рефреш токен) и JWT токены
const axiosInstance = axios.create( { withCredentials: true })
С этой опцией, кука для домена api.domain.zone проставляется, не смотря на то, что запрос был c domain.zone
Но вот при дальнейших запросах с UI (получен с domain.zone) на api.domain.zone вот эта полученная кука берет и не отправляется! И сам хром подсказал, что есть директива выдачи SameSite, которую нужно установить в none, когда выдаешь куку. Но без https это не работает, поэтому до конца я не проверил... - тестировал на локальной машине. И еще потому что такая опция делает это все не безопасным. Допустим у меня есть авторизованный пользователь с кукой, и получается что с любого домена можно дать запрос на api.domain.zone/refresh - получить JWT токены, если установлена была SameSite=none.
И вот в связи с этим всем, два вопроса:
- Как делают в таком случае как у меня (не думаю что я один такой зайтеник)? Как сделать это правильно и безопасно, с таким разделением на домены?
- У кук же нет домена с которого кука была запрошена? Почему так не сделали: Сделал запрос с UI (api.domain.zone) на api.domain.zone получил одну куку. Сделал запрос с UI (domain.zone) на api.domain.zone получил такую же куку, но другую (она работает только для этой связки). Сделал запрос с UI (domain2.zone) на api.domain.zone получил такую же куку, но это третий клон.