Autenticación
Aprende cómo autenticarte con la API de ReliaPulse.
Métodos de Autenticación
ReliaPulse soporta dos métodos de autenticación:
| Método | Caso de Uso | Duración |
|---|---|---|
| Claves API | Integración servidor a servidor | Hasta revocación |
| Cookies de Sesión | Interacciones del navegador | Hasta logout |
Claves API
Las claves API son el método recomendado para acceso programático.
Crear una Clave API
- Navega a Configuración > Claves API
- Haz clic en "Nueva Clave API"
- Configura:
- Nombre: Identificador descriptivo
- Permisos: Selecciona permisos específicos
- Expiración: Opcional
- Haz clic en Crear
- Copia la clave inmediatamente - no se mostrará de nuevo
Formato de Clave
sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx- Prefijo:
sk_live_(producción) osk_test_(test) - 43 caracteres en total
- Codificado en Base64 URL-safe
Usar Claves API
Incluye la clave en el header Authorization:
curl -X GET "https://tu-dominio.com/api/v1/components" \
-H "Authorization: Bearer sk_live_xxxxx"Permisos
Las claves API tienen permisos granulares:
| Permiso | Descripción |
|---|---|
components:read | Leer componentes |
components:write | Crear/actualizar/eliminar componentes |
incidents:read | Leer incidentes |
incidents:write | Crear/actualizar incidentes |
maintenances:read | Leer mantenimientos |
maintenances:write | Crear/actualizar mantenimientos |
status-pages:read | Leer páginas de estado |
status-pages:write | Crear/actualizar páginas de estado |
subscribers:read | Leer suscriptores |
subscribers:write | Gestionar suscriptores |
integrations:read | Leer integraciones |
integrations:write | Gestionar integraciones |
sla:read | Leer configuraciones SLA |
sla:write | Gestionar SLAs |
notifications:read | Leer canales de notificación |
notifications:write | Gestionar notificaciones |
oncall:read | Leer horarios on-call |
oncall:write | Gestionar on-call |
config:read | Leer configuración |
config:write | Aplicar configuración |
organization:read | Leer configuración de org |
organization:write | Gestionar organización |
audit:read | Leer logs de auditoría |
Los permisos de escritura incluyen automáticamente permisos de lectura.
Mejores Prácticas de Seguridad
- Nunca expongas claves en código del cliente
- Usa variables de entorno para almacenamiento
- Rota claves regularmente (mensual recomendado)
- Usa permisos mínimos requeridos
- Monitorea uso vía logs de auditoría
# Bueno - variable de entorno
export STATUS_PAGE_API_KEY="sk_live_xxxxx"
# Malo - hardcodeado
const apiKey = "sk_live_xxxxx"; // ¡Nunca hagas esto!Revocar Claves
- Navega a Configuración > Claves API
- Encuentra la clave
- Haz clic en "Revocar"
- Confirma - la clave deja de funcionar inmediatamente
Autenticación de Sesión
Para aplicaciones basadas en navegador, usa autenticación basada en sesión.
Flujo de Login
// 1. Iniciar sesión
const response = await fetch('/api/auth/signin', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
email: 'user@example.com',
password: 'password'
}),
credentials: 'include' // Importante para cookies
});
// 2. Las solicitudes posteriores incluyen cookie automáticamente
const components = await fetch('/api/v1/components', {
credentials: 'include'
});Verificar Sesión
GET /api/auth/sessionRespuesta:
{
"user": {
"id": "user-id",
"email": "user@example.com",
"name": "Usuario",
"organizationId": "org-id",
"role": "ADMIN"
}
}Códigos de Error
| Código | Descripción | Solución |
|---|---|---|
401 | No autenticado | Proporciona credenciales válidas |
403 | Permisos insuficientes | Verifica permisos de clave API |
429 | Límite de tasa excedido | Reduce frecuencia de solicitudes |
Ejemplos de Respuesta de Error
{
"error": {
"code": "UNAUTHORIZED",
"message": "Clave API inválida o expirada"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Permiso insuficiente: se requiere components:write"
}
}Proveedores OAuth
ReliaPulse soporta autenticación OAuth para login de usuarios:
- GitHub
- Microsoft (Azure AD)
Configura proveedores OAuth en variables de entorno:
# Google
GOOGLE_CLIENT_ID=xxx
GOOGLE_CLIENT_SECRET=xxx
# GitHub
GITHUB_ID=xxx
GITHUB_SECRET=xxx
# Microsoft
AZURE_AD_CLIENT_ID=xxx
AZURE_AD_CLIENT_SECRET=xxx
AZURE_AD_TENANT_ID=xxx