Saltar a contenido

RF-009 — Autenticación federada con Google

Estado En desarrollo (rama hquintero)
Tipo Configuración de provider stock + integración de storefront
Ubicación medusa-config.ts — módulo Auth, provider google
Depende de Módulo Auth — RF-000

Requisito

Permitir al cliente registrarse e iniciar sesión con su cuenta de Google, además del método de email y contraseña, sin que la plataforma administre ni almacene esa credencial.

Solución adoptada

Registrar el provider auth-google que Medusa provee de fábrica junto al provider emailpass, ambos bajo el mismo módulo Auth. No requiere desarrollo propio en el backend: la funcionalidad se completa con la configuración de credenciales y con el manejo del redireccionamiento en el storefront.

sequenceDiagram
    participant N as Navegador
    participant SF as Storefront
    participant API as Backend
    participant G as Google
    N->>API: POST /auth/customer/google
    API-->>N: URL de autorización
    N->>G: Consentimiento
    G->>API: Callback con código
    API->>API: Resolver o crear identidad de autenticación
    API-->>SF: Token de cliente
    SF->>API: Crear o recuperar el cliente con el token

Configuración

Variable Uso
GOOGLE_CLIENT_ID · GOOGLE_CLIENT_SECRET Credenciales de la aplicación registrada en Google Cloud
GOOGLE_CALLBACK_URL URL de retorno autorizada, apuntada al backend

Requiere además incluir el origen del storefront en AUTH_CORS.

Criterios de aceptación

# Criterio
1 Iniciar sesión con una cuenta de Google no registrada previamente y quedar creado como cliente
2 Reingresar con la misma cuenta y recuperar el mismo cliente
3 Mantener operativo el ingreso por email y contraseña en paralelo

Limitaciones conocidas

  • No vincular identidades entre proveedores: un cliente registrado con email y contraseña que intenta ingresar con Google recibe 422 Customer with this email already has an account. La identidad de Google queda creada sin customer_id en su app_metadata y el token se emite sin actor_id. Es comportamiento de diseño de Medusa v2, no un defecto de la configuración; su resolución exige desarrollo propio de vinculación.