Skip to content
Usuario

Local D2 Cookies

Esta pagina es para el dia a dia. Si acabas de bajar cambios y ves Authorization en Network, empieza aqui.

Si quieres entender que hace cada script que se subio al repo, lee tambien Scripts D2 y QA.

Para levantar local normal:
Backend:
cd hemia-assistance-back-legacy
npm run dev
Frontend:
cd hemia-assistance-front-legacy
npm run serve
Para comprobar:
Network no debe tener Authorization.
Cookies deben ser medsync_at_dev, medsync_rt_dev, medsync_csrf_dev.
document.cookie solo debe mostrar medsync_csrf_dev.
localStorage/sessionStorage no deben tener tokens.
Si ves Authorization:
1. No estas en D2.
2. Revisa que no usaste legacy.
3. Limpia navegador.
4. Reinicia backend/frontend.

Cuando estas en D2, el navegador ya no manda un header llamado Authorization para autenticar al usuario.

En lugar de eso, el backend guarda la autenticacion en cookies:

  • medsync_at_dev: access token local, debe ser HttpOnly.
  • medsync_rt_dev: refresh token local, debe ser HttpOnly.
  • medsync_csrf_dev: token CSRF local, si puede verse desde JavaScript.

HttpOnly significa: JavaScript no puede leer esa cookie. Eso protege access/refresh contra robo desde scripts del frontend.

En D2 local:

  • el frontend no debe guardar access token;
  • el frontend no debe guardar refresh token;
  • el frontend no debe mandar Authorization;
  • el navegador manda cookies automaticamente;
  • las mutaciones deben mandar X-CSRF-Token.

D2 no significa que ya migramos a sesiones opacas 100% server-side.

El backend puede seguir usando JWT internamente dentro de una cookie HttpOnly. Eso esta bien para esta fase.

Lo importante es esto:

  • JavaScript no puede ver el JWT.
  • localStorage no puede ver el JWT.
  • sessionStorage no puede ver el JWT.
  • Network del frontend normal no usa Authorization.

Backend:

Terminal window
cd F:\HemiaAssistantGlobal\hemia-assistance-back-legacy
npm run dev

Tambien valido:

Terminal window
npm run dev:d2

Frontend:

Terminal window
cd F:\HemiaAssistantGlobal\hemia-assistance-front-legacy
npm run serve

Tambien valido:

Terminal window
npm run serve:d2

npm run dev y npm run serve son los comandos normales de desarrollo local. Hoy ya prenden D2 local por default.

Comandos que NO debes usar para desarrollo normal

Section titled “Comandos que NO debes usar para desarrollo normal”

Estos comandos son solo para regresiones controladas o comparaciones legacy:

Terminal window
npm run dev:legacy
npm run serve:legacy

Si usas estos comandos, si puedes ver Authorization.

Eso es esperado porque estas encendiendo legacy manualmente.

No uses estos comandos para desarrollo normal.

Backend:

Terminal window
npm start

npm start no fue cambiado para D2 local. Para desarrollo local normal usa npm run dev.

Si alguien usa npm start, debe verificar el env manualmente porque puede no prender el modo D2.

  1. Actualiza ambos repos.

    Usa el flujo de Git normal del equipo para backend y frontend.

  2. Instala dependencias si hace falta.

    Solo si cambian package.json o lockfiles, o si el repo esta recien clonado:

    Terminal window
    npm install
  3. Cierra terminales viejas.

    Una terminal vieja puede seguir corriendo frontend o backend con variables legacy.

  4. Revisa si hay procesos usando puertos.

    No mates procesos a ciegas. Primero identifica el PID y confirma que sea tu Node local.

    Terminal window
    netstat -ano | findstr :3009
    netstat -ano | findstr :8080

    Si usas otro puerto, cambia el numero. Por ejemplo :8081 o :8098.

  5. Borra storage y cookies del navegador.

    Si vienes de legacy, puede haber residuos viejos.

  6. Levanta backend.

    Terminal window
    cd F:\HemiaAssistantGlobal\hemia-assistance-back-legacy
    npm run dev
  7. Levanta frontend.

    Terminal window
    cd F:\HemiaAssistantGlobal\hemia-assistance-front-legacy
    npm run serve
  8. Abre el frontend local.

    Normalmente sera http://localhost:8080 o el puerto que muestre Vue CLI.

  9. Haz login.

    Usa usuario QA/local permitido por el equipo. No pegues passwords ni tokens en chats.

  10. Verifica cookies y Network.

    Si aparece Authorization, no cierres el diagnostico: revisa la seccion de troubleshooting.

En Chrome o Edge:

  1. Abre DevTools.
  2. Ve a Application.
  3. Entra a Storage.
  4. Usa Clear site data.
  5. Repite o verifica para los origenes locales que hayas usado:
    • http://localhost:8080
    • http://127.0.0.1:8080
    • http://localhost:8081
    • http://127.0.0.1:8081
    • cualquier otro puerto local que hayas usado.
  6. Cierra la pestana.
  7. Abre una pestana nueva.
  8. Vuelve a entrar y prueba login.

Alternativa por consola:

localStorage.clear()
sessionStorage.clear()
document.cookie

Importante:

  • document.cookie sirve para ver cookies no HttpOnly.
  • document.cookie no puede borrar cookies HttpOnly.
  • Logout y backend deben limpiar cookies auth.
  • Si tienes duda, usa Clear site data; es la opcion mas clara para borrar residuos locales.

Despues de login, abre una peticion a la API.

Debe verse:

Authorization: NO debe existir
Cookie: puede existir, el navegador la manda automaticamente
X-CSRF-Token: debe existir en POST/PUT/PATCH/DELETE

Si ves Cookie, no significa que algo esta mal. En D2, el navegador adjunta cookies automaticamente.

Para API local deben existir:

medsync_at_dev
medsync_rt_dev
medsync_csrf_dev

Esperado:

medsync_at_dev HttpOnly = true
medsync_rt_dev HttpOnly = true
medsync_csrf_dev HttpOnly = false

Ejecuta:

document.cookie

Resultado esperado:

Puede aparecer medsync_csrf_dev
NO debe aparecer medsync_at_dev
NO debe aparecer medsync_rt_dev

En localStorage y sessionStorage no debe haber:

token
access_token
refresh_token
refreshtoken
jwt
Authorization
permissions
business
tenantOperational

Puede existir:

vue-session-key
hemia_login_logo
loglevel:webpack-dev-server

vue-session-key puede existir como llave tecnica del plugin, pero no debe contener tokens ni contexto auth sensible.

Estas en legacy o en un estado mezclado si ves cualquiera de estas senales:

  • Network muestra Authorization.
  • Login devuelve access token o refresh token en JSON.
  • Refresh manda refresh token en el body.
  • localStorage o sessionStorage tienen token, refresh token, permisos, business o tenant operacional.
  • document.cookie muestra access/refresh.
  • Arrancaste con npm run dev:legacy o npm run serve:legacy.
  • Dejaste abierta una terminal vieja antes de bajar cambios.

Backend:

Terminal window
cd F:\HemiaAssistantGlobal\hemia-assistance-back-legacy
node scripts\qa\d2-auth-cookie-config.js validate
node scripts\qa\d2-refresh-cookie-runtime-regression.js full

Frontend:

Terminal window
cd F:\HemiaAssistantGlobal\hemia-assistance-front-legacy
node scripts\qa\d2-frontend-regression.js full
node scripts\qa\d2-session-lifecycle-frontend.js full

Browser:

Terminal window
node scripts\qa\d2-browser-security-evidence.js

La prueba browser puede requerir backend/frontend levantados, URLs por env y fixtures ficticios. No debe usar datos reales ni imprimir passwords, tokens o cookies completas.

  • Backend levantado con npm run dev.
  • Frontend levantado con npm run serve.
  • No usaste dev:legacy ni serve:legacy.
  • Limpiaste Clear site data si venias de una prueba vieja.
  • Application > Cookies muestra medsync_at_dev, medsync_rt_dev, medsync_csrf_dev.
  • medsync_at_dev y medsync_rt_dev son HttpOnly=true.
  • document.cookie solo muestra medsync_csrf_dev.
  • Network no tiene Authorization.
  • Mutaciones tienen X-CSRF-Token.
  • Storage no contiene tokens ni contexto auth sensible.

No me funciona: que mandar para pedir ayuda

Section titled “No me funciona: que mandar para pedir ayuda”

Manda evidencia concreta, sin secretos:

  1. Comando exacto usado para backend.

  2. Comando exacto usado para frontend.

  3. URL frontend usada.

  4. URL API configurada.

  5. Screenshot de Network donde se ve Authorization.

  6. Screenshot de Application > Cookies.

  7. Resultado de este comando si aplica:

    Terminal window
    npm run dev -- --help

    Si no aplica, manda los primeros logs de arranque sin secretos.

  8. Confirma si usaste serve:legacy o dev:legacy.

  9. Confirma si hiciste Clear site data.

No mandes passwords, tokens, OTPs, cookies completas ni archivos .env.local.