Interactúa con Management API
¿Qué es Logto Management API?
El Logto Management API es un conjunto completo de APIs que brinda a los desarrolladores control total sobre su implementación para adaptarse a las necesidades de su producto y stack tecnológico. Está preconstruido, listado en el Consola > Recursos de API > Logto Management API, y no se puede eliminar ni modificar.
Su identificador sigue el patrón de https://[tenant-id].logto.app/api
Con Logto Management API, puedes acceder a los robustos servicios de backend de Logto, que son altamente escalables y pueden ser utilizados en una multitud de escenarios. Va más allá de lo que es posible con las capacidades de bajo código de la Consola de Administración.
Algunas APIs frecuentemente utilizadas se enumeran a continuación:
Para obtener más información sobre las APIs disponibles, visita https://openapi.logto.io/.
Cómo acceder a Logto Management API
Crear una aplicación M2M
Si no estás familiarizado con el flujo de autenticación M2M (Máquina a Máquina), te recomendamos leer primero Comprender el flujo de autenticación para entender los conceptos básicos.
Ve a Consola > Aplicaciones, selecciona el tipo de aplicación "Máquina a máquina" y comienza el proceso de creación.
Durante el proceso de creación de la aplicación M2M, serás dirigido a una página donde puedes asignar roles M2M a tus aplicaciones:
O también puedes asignar estos roles en la página de detalles de la aplicación M2M cuando ya tengas una aplicación M2M creada:
En el módulo de asignación de roles, puedes ver que se incluyen todos los roles M2M, y los roles indicados por un icono de Logto significan que estos roles incluyen permisos de Logto Management API.
Ahora asigna roles M2M que incluyan permisos de Logto Management API para tu aplicación M2M.
Obtener un token de acceso
Conceptos básicos sobre la solicitud de token de acceso
La aplicación M2M realiza una solicitud POST
al endpoint de token para obtener un token de acceso añadiendo los siguientes parámetros utilizando el formato application/x-www-form-urlencoded
en el cuerpo de la entidad de la solicitud HTTP:
- grant_type: Debe establecerse en
client_credentials
- resource: El recurso al que deseas acceder
- scope: El alcance de la solicitud de acceso
También necesitas incluir las credenciales de tu aplicación M2M en el encabezado de la solicitud para que el endpoint de token autentique tu aplicación M2M.
Esto se logra incluyendo las credenciales de la aplicación en el formulario de autenticación básica en el encabezado de Authorization
de la solicitud, donde el nombre de usuario es el App ID y la contraseña es el App Secret.
Puedes encontrar el App ID y el App Secret en la página de detalles de tu aplicación M2M:
Obtener token de acceso para Logto Management API
Logto proporciona un recurso incorporado "Logto Management API", es un recurso de solo lectura con el permiso all
para acceder a Logto Management API, puedes verlo en tu lista de recursos de API. El indicador de API del recurso sigue el patrón https://{your-tenant-id}.logto.app/api
, y este será tu valor de recurso utilizado en el cuerpo de la solicitud del token de acceso.
Antes de acceder a Logto Management API, asegúrate de que tu aplicación M2M haya sido asignada con roles M2M que incluyan el permiso all
de este recurso incorporado "Logto Management API".
Logto también proporciona un rol M2M preconfigurado "Logto Management API access" para los nuevos inquilinos creados, al cual ya se le ha asignado el permiso all
del recurso Logto Management API. Puedes usarlo directamente sin configurar manualmente los permisos. Este rol preconfigurado también puede ser editado y eliminado según sea necesario.
Ahora, compón todo lo que tenemos y envía la solicitud:
- Node.js
- cURL
const logtoEndpoint = 'https://your.logto.endpoint'; // Reemplaza con tu endpoint de Logto
const tokenEndpoint = `${logtoEndpoint}/oidc/token`;
const applicationId = 'your-application-id';
const applicationSecret = 'your-application-secret';
const tenantId = 'your-tenant-id';
const fetchAccessToken = async () => {
return await fetch(tokenEndpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
Authorization: `Basic ${Buffer.from(`${applicationId}:${applicationSecret}`).toString(
'base64'
)}`,
},
body: new URLSearchParams({
grant_type: 'client_credentials',
resource: `https://${tenantId}.logto.app/api`,
scope: 'all',
}).toString(),
});
};
curl --location \
--request POST 'https://your.logto.endpoint' \
--header 'Authorization: Basic ${your_auth_string}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'grant_type=client_credentials' \
--data-urlencode 'resource=https://${tenantId}.logto.app/api' \
--data-urlencode 'scope=all'
Recuerda reemplazar los valores reales con los tuyos propios.
Para los usuarios de Logto Cloud: cuando interactúes con Logto Management API, no puedes usar un dominio personalizado, utiliza el endpoint predeterminado de Logto https://{your_tenant_id}.logto.app/oidc/token
para otorgar tokens de acceso.
Respuesta del token de acceso
Un cuerpo de respuesta de acceso exitoso sería como:
{
"access_token": "eyJhbG...2g", // Usa este token para acceder a Logto Management API
"expires_in": 3600, // Expiración del token en segundos
"token_type": "Bearer", // Tipo de autenticación para tu solicitud al usar el token de acceso
"scope": "all" // alcance `all` para Logto Management API
}
Logto actualmente no admite que la aplicación M2M represente a un usuario. El sub
en la carga útil del token de acceso será el ID de la aplicación.
Acceder a Logto Management API usando el token de acceso
Es posible que notes que la respuesta del token tiene un campo token_type
, que está fijado a Bearer
.
Por lo tanto, debes colocar el token de acceso en el campo Authorization
de los encabezados HTTP con el formato Bearer (Bearer YOUR_TOKEN
) cuando estés interactuando con tu servidor de recursos de API.
Usando el token de acceso solicitado con el recurso de API de Logto Management incorporado https://[your-tenant-id].logto.app/api
para obtener todas las aplicaciones en Logto:
- Node.js
- cURL
const logtoEndpoint = 'https://your.logto.endpoint'; // Reemplaza con tu endpoint de Logto
const accessToken = 'eyJhb...2g'; // Token de acceso
const fetchLogtoApplications = async () => {
return await fetch(`${logtoEndpoint}/api/applications`, {
method: 'GET',
headers: {
Authorization: `Bearer ${accessToken}`,
},
});
};
curl --location \
--request GET 'https://your.logto.endpoint/api/applications' \
--header 'Authorization: Bearer eyJhbG...2g'
Recuerda reemplazar los valores reales con los tuyos propios. El valor después de Bearer
debe ser el token de acceso (JWT) que recibiste.
Escenarios típicos para usar Logto Management API
Nuestros desarrolladores han implementado muchas características adicionales usando Logto Management API. Creemos que nuestra API es altamente escalable y puede soportar una amplia gama de tus necesidades. Aquí hay algunos ejemplos de escenarios que no son posibles con la Consola de Administración de Logto pero que se pueden lograr a través de Logto Management API.
Implementar el perfil de usuario por tu cuenta
Logto actualmente no proporciona una solución de interfaz de usuario preconstruida para perfiles de usuario. Reconocemos que los perfiles de usuario están estrechamente vinculados a los atributos de negocio y producto. Mientras trabajamos en determinar el mejor enfoque, sugerimos usar nuestras APIs para crear tu propia solución. Por ejemplo, puedes utilizar nuestra API de interacción, API de perfil y API de código de verificación para desarrollar una solución personalizada que satisfaga tus necesidades.
Búsqueda avanzada de usuarios
La Consola de Administración de Logto admite funciones básicas de búsqueda y filtrado. Para opciones de búsqueda avanzada como búsqueda difusa, coincidencia exacta y sensibilidad a mayúsculas, consulta nuestros tutoriales y guías de Búsqueda Avanzada de Usuarios.
Implementar la gestión de organizaciones por tu cuenta
Si estás utilizando la función de organizaciones para construir tu aplicación multi-tenant, podrías necesitar Logto Management API para tareas como invitaciones a organizaciones y gestión de miembros. Para tu producto SaaS, donde tienes tanto administradores como miembros en el tenant, Logto Management API puede ayudarte a crear un portal de administración personalizado adaptado a las necesidades de tu negocio. Consulta esto para más detalles.
Consejos para usar Logto Management API
Gestionar respuestas de API paginadas
Algunas de las respuestas de API pueden incluir muchos resultados, los resultados se paginarán. Logto proporciona 2 tipos de información de paginación.
Usando encabezados de enlace
Un encabezado de respuesta paginada será como:
Link: <https://logto.dev/users?page=1&page_size=20>; rel="first"
El encabezado de enlace proporciona la URL para la página anterior, siguiente, primera y última de resultados:
- La URL para la página anterior está seguida por rel="prev".
- La URL para la página siguiente está seguida por rel="next".
- La URL para la última página está seguida por rel="last".
- La URL para la primera página está seguida por rel="first".
Usando el encabezado de número total
Además de los encabezados de enlace estándar, Logto también agregará un encabezado Total-Number
:
Total-Number: 216
Eso sería muy conveniente y útil para mostrar números de página.
Cambiar el número de página y el tamaño de página
Hay 2 parámetros de consulta opcionales:
page
: indica el número de página, comienza desde 1, el valor predeterminado es 1.page_size
: indica el número de elementos por página, el valor predeterminado es 20.
Límite de tasa
Esto es solo para Logto Cloud.
Para garantizar la fiabilidad y seguridad de nuestros servicios para todos los usuarios, empleamos un firewall general que monitorea y gestiona el tráfico a nuestro sitio web. Aunque no imponemos un límite de tasa estricto, recomendamos que los usuarios limiten su actividad a aproximadamente 200 solicitudes cada 10 segundos para evitar activar nuestras medidas de protección.