API de Autenticación para Desarrolladores
Integra proveedores empresariales con flujos OAuth2 listos para producción
Ejemplo de implementación OAuth2
Consulta fragmentos de código prácticos para autenticar usuarios, intercambiar tokens y acceder a APIs de forma segura.
1. Autenticación OAuth con ventana emergente: cómo obtener tu accessToken y refreshTokenEste fragmento muestra cómo iniciar un flujo de autenticación OAuth mediante una ventana emergente centrada en pantalla. Al abrir el proveedor (google, github, etc.) en una nueva ventana, el backend realiza la autenticación y responde con los tokens mediante postMessage. El script escucha ese mensaje, valida el origen, y guarda el accessToken y refreshToken (u otros datos del usuario) en localStorage
const width = 600;
const height = 600;
const pageToken = "eyJhbGciOiJSUzIIkpXV..."
const left = window.screen.width / 2 - width / 2;
const top = window.screen.height / 2 - height / 2;
const provider = 'google'; // ← reemplaza dinámicamente si lo necesitas
const authUrl = `https://ms.dveloxsoft.com/auth/${provider}?state=${pageToken}`;
const popup = window.open(
authUrl,
'authPopup',
`width=${width},height=${height},left=${left},top=${top}`
);
const backendOrigin = 'https://ms.dveloxsoft.com';
const popupChecker = setInterval(() => {
if (!popup || popup.closed) {
clearInterval(popupChecker);
}
}, 500);
window.addEventListener('message', (event) => {
if (event.origin !== backendOrigin) return;
try {
const data = typeof event.data === 'string' ? JSON.parse(event.data) : event.data;
localStorage.setItem('user', JSON.stringify(data));
} catch (err) {
console.error('Error parsing auth response:', err);
}
clearInterval(popupChecker);
popup?.close();
});
2. Cómo consumir endpoints protegidos con x-ms-authorization-token y accessTokenEste tutorial explica cómo estructurar tus peticiones HTTP para consumir los endpoints de la plataforma de forma segura y autorizada. Al registrar tu sitio, recibirás un token exclusivo (x-ms-authorization-token) que debes incluir en todas las peticiones, como cabecera personalizada: Además, para todos los endpoints excepto login, register y provider/get-all, también debes incluir el accessToken obtenido tras la autenticación del usuario. Este se envía como un Bearer token en la cabecera estándar:
x-ms-authorization-token: <token_entregado_al_registrar>
Authorization: Bearer <accessToken>
3. Obtener datos del usuarioEsta API permite obtener la información completa del usuario autenticado mediante un token de acceso válido. Si se proporciona además un parámetro opcional id en la URL, la API verificará que el recurso solicitado (por ejemplo, un usuario secundario o creado por el principal) esté relacionado jerárquicamente con el usuario dueño del token. Si la relación es válida, los datos del usuario solicitado serán devueltos. De lo contrario, se denegará el acceso.
curl ^"https://ms.dveloxsoft.com/users/get-one^" ^
-H ^"accept: application/json, text/plain, */*^" ^
-H ^"accept-language: es-CU,es-419;q=0.9,es;q=0.8^" ^
-H ^"authorization: Bearer eyJhbGciOiJSUzIIkpXVCJ9.eyJzdWIiOjE..." ^
-H ^"if-none-match: W/^^"2f048-jfmAUUV9npUOHqGrnT0s+BaR0B8^^"^" ^
-H ^"origin: https://iam.dveloxsoft.com^" ^
-H ^"priority: u=1, i^" ^
-H ^"referer: https://iam.dveloxsoft.com/^" ^
-H ^"sec-ch-ua: ^^"Chromium^^";v=^^"140^^", ^^"Not=A?Brand^^";v=^^"24^^", ^^"Google Chrome^^";v=^^"140^^"^" ^
-H ^"sec-ch-ua-mobile: ?0^" ^
-H ^"sec-ch-ua-platform: ^^"Windows^^"^" ^
-H ^"sec-fetch-dest: empty^" ^
-H ^"sec-fetch-mode: cors^" ^
-H ^"sec-fetch-site: cross-site^" ^
-H ^"user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/140.0.0.0 Safari/537.36^" ^
-H ^"x-ms-authorization-token: eyJhbGciOCI6IkpXVCJ9...^"