Atualmente o refresh token é retornado no body da resposta e armazenado no frontend (localStorage ou similar), o que o expõe a ataques XSS. Esta issue move o refresh token para um cookie httpOnly, eliminando esse vetor de ataque.
Critérios de aceitação
Backend
Configuração
URLs
Testes
Observações
- O access token não muda — apenas o refresh token vai pro cookie
CORS_ALLOW_CREDENTIALS = True precisa ser adicionado ao settings.py para o frontend conseguir enviar o cookie
- Testar com Postman habilitando cookies nas configurações da collection
Atualmente o refresh token é retornado no body da resposta e armazenado no frontend (localStorage ou similar), o que o expõe a ataques XSS. Esta issue move o refresh token para um cookie httpOnly, eliminando esse vetor de ataque.
Critérios de aceitação
Backend
CookieTokenRefreshViewcustomizada sobrescrevendoTokenRefreshViewdo SimpleJWTCookieLoginViewcustomizada sobrescrevendoTokenObtainPairViewhttponly=Truesamesite="Lax"secure=Trueem produção (DEBUG=False)max_ageigual aoREFRESH_TOKEN_LIFETIMEdo SimpleJWTConfiguração
COOKIE_SECUREaosettings.pycontrolado porDEBUG.env.examplecom variável de domínio do cookie se necessárioURLs
config/urls.pyTestes
Observações
CORS_ALLOW_CREDENTIALS = Trueprecisa ser adicionado aosettings.pypara o frontend conseguir enviar o cookie