$TOKEN, listo para los ejemplos de las demás páginas de la API. Verá dos flujos. El primero inicia sesión a un usuario en el navegador. El segundo autentica un proceso del lado del servidor.
Antes de empezar
Necesita lo siguiente:-
El nombre de su tenant. VU ONE genera ese nombre con la forma
<adjetivo>-<sustantivo>-<4 dígitos>, por ejemplowispy-waterfall-3912. -
Un cliente OAuth para cada flujo. Cree los clientes en Clientes OAuth:
- Para el flujo de usuario: deje Código de Autorización en Tipos de Concesión. En URIs de Redirección, agregue la URI exacta de su aplicación. La consola solo acepta URIs que empiezan con
http://ohttps://. En una app móvil nativa, use una URIhttps://que abra su app, como un enlace universal de iOS o un App Link de Android, en lugar de un esquema propio. En Alcances, elija OpenID Connect, Perfil y Correo Electrónico (openid,profileyemail). Una aplicación de una sola página o móvil no puede guardar un secreto: elija el método Ninguno y active Requerir PKCE (Proof Key for Code Exchange). - Para el flujo de servidor: Credenciales de Cliente. El cliente del inicio rápido ya sirve para este flujo, pero no para el de usuario.
- Para el flujo de usuario: deje Código de Autorización en Tipos de Concesión. En URIs de Redirección, agregue la URI exacta de su aplicación. La consola solo acepta URIs que empiezan con
-
Para probar el flujo de usuario, un usuario de prueba con contraseña. El Ámbito de Acceso del cliente define qué cuentas pueden iniciar sesión:
- Un cliente fijado a un negocio abre la página de inicio de sesión de ese negocio. El usuario necesita una cuenta en ese negocio, del mismo Tipo de Cuenta que el cliente.
- Un cliente con Global (Tenant) abre la pestaña Global. Esa pestaña solo acepta cuentas sin negocio de tipo LABORAL, como las de administrador del tenant.
CUSTOMERen un negocio: para esa cuenta, fije el cliente a ese negocio con el tipo de cuenta CLIENTE. -
curlyjqinstalados en su equipo.
Durante la vista previa, los SDK no se distribuyen públicamente. Esta página cubre la API.
URL base y endpoints
Todas las rutas usan el mismo host de su tenant.
Lea el documento de descubrimiento en tiempo de ejecución. No copie su contenido en su código. Para iniciar sesión, use el
authorization_endpoint que publica ese documento.
Defina estas variables antes de seguir los ejemplos. TENANT_HOST es la misma variable que usa el inicio rápido:
Elija el flujo
Flujo de usuario: código de autorización con PKCE
Use este flujo cuando un usuario inicia sesión desde una aplicación web o móvil. Su aplicación no recibe la contraseña del usuario. El usuario la escribe en la pantalla de inicio de sesión de VU ONE.1
Lea el endpoint de inicio de sesión
2
Cree el verificador y el desafío PKCE
CODE_VERIFIER y STATE. Los necesita en los pasos siguientes.3
Abra la pantalla de inicio de sesión
4
Reciba el código de autorización
Tras el inicio de sesión, el navegador vuelve a
redirect_uri con los parámetros code y state. Compare state con el valor que guardó. Si no coincide, rechace la respuesta.Copie el valor de code en una variable:5
Intercambie el código por tokens
client_secret_basic, el método de autenticación por defecto de la consola. Si su cliente usa otro método, autentíquelo con ese método. Un cliente público, con el método Ninguno, no envía secreto: quite -u y envíe client_id en el cuerpo. El code_verifier protege el intercambio.6
Lea el perfil del usuario
La pantalla de inicio de sesión que publica
authorization_endpoint es la de la consola de VU ONE. Esa pantalla recibe client_id, redirect_uri, scope, state, code_challenge y code_challenge_method, y devuelve el código a su redirect_uri. Antes de salir a producción, pruebe el flujo completo con un usuario de prueba. Revise que el cliente tenga el grant authorization_code, la redirect_uri exacta y los scopes que pide (openid, profile, email)./oauth2/token sigue el estándar de OAuth 2.0 y OpenID Connect:
Flujo de servidor: client_credentials
Use este flujo para un proceso sin usuario, como una integración entre sistemas. No hay pantalla de inicio de sesión en este flujo. Antes de pedir un token, revise la configuración del cliente:- Un cliente sin configuración de negocio no recibe token. La API responde
invalid_scope. - El cliente necesita el tipo de concesión Credenciales de Cliente. La consola marca Código de Autorización por defecto.
- Un cliente con Global (Tenant) como negocio recibe tokens de alcance
TENANT. Un cliente fijado a un negocio recibe tokens de alcanceBUSINESS, conbusiness_id. Si además está fijado a un canal, el token traechannel_id. - El scope
role_adminconcede todos los permisos, pero solo dentro del negocio y el canal del cliente. Pida solo los scopes que necesita cuando pueda.
$TOKEN:
role_admin puede pedir un permiso concreto, como sys_account:read, para reducir el alcance del token. Un cliente sin role_admin solo puede pedir los scopes que tiene registrados.
Este flujo no devuelve refresh_token. Cuando el token vence, pida uno nuevo con las mismas credenciales.
Renovar el token
Use elrefresh_token para obtener un nuevo access_token sin pedir al usuario que inicie sesión de nuevo.
refresh_token nuevo, guárdelo y descarte el anterior.
El grant password no es para integraciones
No use el grantpassword en integraciones web ni de servidor. Solo lo usa el SDK móvil, con una clave de dispositivo. Para cualquier otra integración, use el flujo de código de autorización o client_credentials.
Claims del token
Cada token de acceso trae claims que describen el contexto de la sesión. Los claims de perfil, como el nombre o el correo, no van en el token. Consúltelos en /userinfo.
Los tokens de
client_credentials no traen identity_id ni account_id. Traen active_scope según la configuración de negocio del cliente.
Perfil con /userinfo
Llame a/userinfo con el token de acceso. El servidor devuelve los campos estándar solo para los scopes que pidió. Pida profile para el nombre, email para el correo y phone para el teléfono.
Indica si el teléfono está verificado. Requiere el scope
phone. La respuesta usa este nombre, no phone_number_verified./userinfo devuelve campos propios de VU ONE: active_scope, business_id, login_slug, identity_id, account_type, account_state, identity_provider_id, is_tenant_admin y metadata.
Encabezados de contexto
Use estos encabezados para elegir el negocio o el canal de una llamada. Un encabezado nunca cambia el alcance que el token ya tiene.
Un encabezado que solo indica el canal recibe, del token, el negocio y el alcance que faltan.
Validar un token en su servicio
Si su servicio recibe tokens de acceso, valídelos antes de confiar en ellos:1
Descargue las claves públicas del tenant
2
Verifique la firma
Verifique la firma RS256 con la clave JWKS que corresponde al token.
3
Compruebe los claims
- Compruebe que
issseahttps://<tenant>.prod.vu-one.com/middleware. - Compruebe que
expno haya pasado. - Compruebe
audsolo si su librería lo exige. Esta vista previa no documenta un valor fijo paraaud. - Compruebe
tenant_idsi su servicio atiende más de un tenant.
Cerrar sesión
Hay dos formas de cerrar la sesión de un usuario. Cierre de sesión OIDC. Redirija el navegador al endpoint de cierre de sesión. Useend_session_endpoint del documento de descubrimiento. Si ese documento no lo publica, use https://$TENANT_HOST/middleware/connect/logout.
Revocar el refresh token. Este paso invalida el token para renovar el acceso. El token de la llamada necesita el permiso sys_oauth2_authorization:delete o el scope role_admin. Por ejemplo, haga la llamada desde su backend con un token de client_credentials:
204 sin cuerpo, también cuando el refresh token no existe. Después de revocar el token, el cliente no puede usarlo para renovar el acceso.
Qué sigue
Cuentas, identidades y contraseñas
Cree identidades y cuentas, y administre contraseñas con la API.
Factores de autenticación en la API
Enrole y verifique OTP por correo, TOTP y enlace mágico.
Errores de la API de VU ONE FREE
Entienda cada forma de error y cuándo reintentar.
Clientes OAuth
Revise los valores por defecto y las buenas prácticas del cliente.