Ir al contenido

Login de clientes

Cada cliente inicia sesión en la página de La Vitrina y vuelve a tu sitio con su token del cliente. Se usa el estándar OpenID Connect con el flujo de código de autorización con PKCE, que no necesita secreto, así que puede hacerse desde el navegador. Funciona con cualquier librería OpenID Connect.

Los clientes usan su propio espacio, tienda-clientes (distinto del de la tienda):

Qué Dirección
Descubrimiento https://auth.lavitrina-online.com/realms/tienda-clientes/.well-known/openid-configuration
Autorización https://auth.lavitrina-online.com/realms/tienda-clientes/protocol/openid-connect/auth
Token https://auth.lavitrina-online.com/realms/tienda-clientes/protocol/openid-connect/token
Cerrar sesión https://auth.lavitrina-online.com/realms/tienda-clientes/protocol/openid-connect/logout
Dato Valor
client_id El Client ID (login de clientes) de la sección Desarrollador: sf-TU_STORE_ID-login.
redirect_uri Una de las direcciones de regreso que escribiste en Desarrollador, exactamente igual.
  1. Genera el par PKCE. Crea un code_verifier aleatorio (entre 43 y 128 caracteres) y calcula el code_challenge como BASE64URL(SHA256(code_verifier)).

  2. Envía al cliente a la pantalla de inicio de sesión:

    https://auth.lavitrina-online.com/realms/tienda-clientes/protocol/openid-connect/auth
    ?client_id=sf-TU_STORE_ID-login
    &redirect_uri=https://mitienda.com/callback
    &response_type=code
    &scope=openid
    &code_challenge=CODE_CHALLENGE
    &code_challenge_method=S256
    &state=VALOR_ALEATORIO
  3. Recibe el código. El cliente vuelve a tu redirect_uri con ?code=...&state=.... Comprueba que state es el que enviaste.

  4. Cambia el código por el token:

    Ventana de terminal
    curl -X POST "https://auth.lavitrina-online.com/realms/tienda-clientes/protocol/openid-connect/token" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -d "grant_type=authorization_code" \
    -d "client_id=sf-TU_STORE_ID-login" \
    -d "redirect_uri=https://mitienda.com/callback" \
    -d "code=CODIGO_RECIBIDO" \
    -d "code_verifier=CODE_VERIFIER"
  5. Llama a Datos del cliente con el token. Así el cliente queda vinculado a tu tienda aunque se haya registrado en otra.

{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 120,
"refresh_expires_in": 1800,
"refresh_token": "eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9...",
"id_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"scope": "openid profile email"
}
Campo Descripción
access_token El token del cliente. Va en cada petición de sus rutas. Dura 2 minutos.
refresh_token Pide un token nuevo sin que el cliente inicie sesión otra vez. Mira Renovar el token.
refresh_expires_in Segundos que dura el refresh_token.