Obtener un token de acceso
Objetivo
Obtener un token de acceso OAuth2 del servicio de identidad de Parsware para poder llamar a las API de la plataforma durante el desarrollo.
Requisitos previos
- El servicio de identidad está en ejecución y es accesible (en el desarrollo local escucha
en
http://localhost:5000). - Se han creado los datos iniciales de desarrollo (se crean automáticamente en el primer
arranque): un inquilino de desarrollo y una cuenta de administrador
(
admin@parsware.local). - Un cliente REST, como
curl.
Pasos
-
Solicite un token al endpoint de tokens con el cliente de desarrollo y las credenciales del administrador creado inicialmente:
curl -X POST http://localhost:5000/connect/token \-H "Content-Type: application/x-www-form-urlencoded" \-d "grant_type=password" \-d "username=admin@parsware.local" \-d "password=Passw0rd!" \-d "scope=profile roles parsware.api offline_access" \-d "client_id=parsware-dev-cli" \-d "client_secret=dev-cli-secret" -
Lea el
access_tokende la respuesta JSON. La respuesta también incluye unrefresh_token(porque se solicitóoffline_access) y un valorexpires_inen segundos. -
Llame a una API con el token en el encabezado
Authorization. Para comprobar que el token funciona, llame al endpoint userinfo:curl http://localhost:5000/connect/userinfo \-H "Authorization: Bearer <access_token>"La respuesta identifica al usuario que ha iniciado sesión (sujeto, nombre, correo electrónico, inquilino).
Qué ocurre entre bastidores
El servicio de identidad verifica la contraseña del administrador y emite un token de acceso JWT firmado. El token está firmado (no cifrado), de modo que cualquier servicio de la plataforma lo valida directamente con las claves de firma publicadas por el servicio de identidad: no hay ninguna llamada de vuelta al servicio de identidad en cada solicitud.
Solución de problemas
invalid_grant: el nombre de usuario o la contraseña son incorrectos, o la cuenta está bloqueada tras varios intentos fallidos. Espere y vuelva a intentarlo, o restablezca la contraseña.invalid_client: elclient_id/client_secretno corresponde a ningún cliente registrado. En desarrollo, useparsware-dev-cli/dev-cli-secret.invalid_scope: uno de los ámbitos solicitados no está permitido para el cliente. Solicite únicamenteprofile,roles,offline_accessyparsware.api.- Conexión rechazada: el servicio de identidad no está en ejecución o escucha en otro puerto.
- El token solo incluye
mfa.enrol(suaudesparsware-mfa-enrolment): la cuenta es una cuenta de personal que aún no tiene aplicación de autenticación. La MFA es obligatoria para el personal: registre una (desde el perfil, o conPOST /connect/mfa/enrolmenty este token) y vuelva a solicitarlo con-d "mfa_code=<the six digits>". En una implementación, el administrador es quien indiquePLATFORM_ADMIN_EMAILen esa implementación, noadmin@parsware.local.
Escenarios relacionados
- Inspeccionar las claves JWKS que publica el servicio de identidad.
La concesión por contraseña que se muestra aquí es una comodidad para el desarrollo que permite obtener un token desde la línea de comandos. El inicio de sesión interactivo real usa el flujo de código de autorización con PKCE a través del Shell de la plataforma.