Autenticación
Autenticación
Cómo autenticar cada tipo de solicitud a Rhombus: qué credencial usar para REST, medios y video, el WebSocket de eventos y las cámaras de tu red, dónde va cada una, las credenciales de partner y cómo interpretar las respuestas 401, 403 y 429.
En esta página
Esta página se tradujo automáticamente. Si encuentras errores o tienes sugerencias, escríbenos.
Cada solicitud a Rhombus lleva una credencial. Qué credenciales puede usar una solicitud, y dónde van, depende de adónde va la solicitud: la API REST, los hosts de medios y video, el WebSocket de eventos o una cámara de tu red local. Esta página relaciona cada credencial con cada destino y explica los errores de autenticación; las páginas siguientes cubren cada credencial en detalle.
Elige una credencial
| Lo que estás construyendo | Usa | Detalles |
|---|---|---|
| Un servicio de backend, un script o una tarea programada en una organización | Clave de API | Claves de API y certificados |
| Un backend cuya política de seguridad exige TLS mutuo | Clave de API de certificado (mTLS) | Claves de API y certificados |
| Una app en la que otros clientes de Rhombus inician sesión y a la que dan autorización | Access token de OAuth ("Iniciar sesión con Rhombus") | Iniciar sesión con Rhombus |
| Una herramienta para un MSP o revendedor que gestiona muchas organizaciones cliente | Clave de API de partner o token de OAuth de partner | API para partners |
| Video, imágenes, audio o eventos en vivo en un navegador o una app móvil, o cualquier cosa en la red local de una cámara | Token federado, generado por tu backend | Tokens federados |
| Un enlace que cualquiera puede abrir para ver una cámara | Enlace de transmisión compartida | Medios y transmisiones |
Las claves de API y las claves de partner son credenciales del lado del servidor. Nunca pongas una en una página web, una app móvil ni en ningún código que un usuario pueda leer. Todo lo que se ejecuta en el dispositivo de un usuario recibe en su lugar un token federado de corta duración desde tu backend.
Dónde funciona cada credencial
| Credencial | API REST (api2) | Medios y video | WebSocket de eventos (ws) | Cámaras en tu LAN |
|---|---|---|---|---|
| Clave de API | Encabezados | Encabezados | Encabezados del handshake | No se acepta |
| Clave de API de certificado | Certificado de cliente más encabezados (solo hosts api2) | No se acepta; usa una clave de API o un token federado | No se acepta | No se acepta |
| Access token de OAuth | Encabezados | Encabezados | Encabezados del handshake | No se acepta |
| Clave, certificado o token de OAuth de partner | Igual que la credencial de organización, más x-auth-org | Igual, más x-auth-org | Igual, más x-auth-org (obligatorio) | No se acepta |
| Token federado | Encabezados o parámetros de consulta | Encabezados o parámetros de consulta | Encabezados o parámetros de consulta | Encabezados o parámetros de consulta |
Las cámaras de tu red local aceptan solo tokens federados. Es una decisión deliberada: en la red local, cada solicitud lleva un token de corta duración que puedes limitar a la cámara que necesita, nunca una clave de larga duración. Consulta Streaming por LAN.
Hosts por destino (Regiones de EE. UU. y UE indica las variantes de la UE):
| Destino | Host de EE. UU. |
|---|---|
| API REST | https://api2.rhombussystems.com |
| Medios y video | https://media.rhombussystems.com, más los hosts de streaming por cámara que devuelve getMediaUris |
| WebSocket de eventos | wss://ws.rhombussystems.com:8443/ |
| Cámaras en tu LAN | https://<camera>.lan.rhombussystems.com:8000, que devuelve getMediaUris |
Encabezados de la solicitud
Una solicitud indica su esquema en x-auth-scheme y lleva la credencial en el encabezado que ese esquema lee:
| Credencial | x-auth-scheme | Encabezado de la credencial | Adicional |
|---|---|---|---|
| Clave de API | api-token | x-auth-apikey | — |
| Clave de API de certificado | api | x-auth-apikey | Certificado de cliente TLS |
| Access token de OAuth | api-oauth-token, u omítelo | x-auth-access-token, o Authorization: | — |
| Token federado | federated-token | x-auth-ft | Ambos pueden ir como parámetros de consulta: ?x-auth-scheme=federated-token |
| Clave, certificado o token de OAuth de partner | Los mismos tres esquemas; partner-api-token, partner-api y partner-api-oauth-token se aceptan como alias | Los mismos encabezados | x-auth-org: (consulta Credenciales de partner) |
curl -X POST "https://api2.rhombussystems.com/api/camera/getMinimalCameraStateList" \
-H "x-auth-scheme: api-token" \
-H "x-auth-apikey: $RHOMBUS_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'curl -X POST "https://api2.rhombussystems.com/api/camera/getMinimalCameraStateList" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'Reglas que se aplican en todas partes:
- Los nombres de los encabezados y el valor del esquema son exactos.
x-auth-scheme: api-tokenfunciona;Api-Tokenno. Authorization: Bearerlleva solo un access token de OAuth, en la API REST, los hosts de medios y el WebSocket de eventos. Un encabezado Bearer sinx-auth-schemese interpreta como un access token de OAuth. Las claves de API nunca van enAuthorization.- Solo los tokens federados van en una URL.
x-auth-schemeyx-auth-ftpueden ser parámetros de consulta; las claves de API, los access tokens de OAuth yx-auth-orgse leen solo de los encabezados. - Las credenciales están vinculadas a una región. Una clave o un token de una organización de EE. UU. no funciona en los hosts de la UE, ni al revés. El error no menciona la región. Consulta Regiones de EE. UU. y UE.
- Vigencias: una clave de API funciona hasta que la eliminas o hasta su vencimiento (
expiresAtMs), si lo tiene. Los access tokens de OAuth duran una hora. Los tokens federados duran eldurationSecque pidas al generarlos: una hora de forma predeterminada, 24 horas como máximo. - La revocación surte efecto en un máximo de 60 segundos en todos los hosts. Eliminar una clave, cambiar su rol o revocar una autorización de OAuth termina su acceso, y las conexiones WebSocket abiertas que la usaban se cierran.
- Envía
Content-Type: application/jsonen cada POST a la API REST, incluso con un cuerpo vacío ({}).
Credenciales de partner
Las claves de partner, las claves de certificado de partner y los tokens de OAuth de partner usan los mismos esquemas que las credenciales de organización. Para actuar en una organización cliente, envía el UUID de esa organización en x-auth-org:
x-auth-orges solo un encabezado; nunca se lee de un parámetro de consulta. Significa lo mismo para claves, certificados y tokens de OAuth de partner, y un valor vacío cuenta como ausente.- Fuera de los endpoints
/api/partner/, envía siemprex-auth-org. Una solicitud de partner sin él sigue funcionando, pero la respuesta llevaDeprecation: trueySunset: Tue, 05 Jan 2027 00:00:00 GMT, y después de esa fecha la solicitud falla. El WebSocket de eventos rechaza un handshake de partner sinx-auth-orgcon 403PERMISSION_REQUIRED. - Un valor mal formado devuelve 400
INVALID_AUTH_ORG; una organización cliente que tu cuenta de partner no gestiona devuelve 403PARTNER_CLIENT_ACCESS_DENIED.
Consulta API para partners para listar clientes y hacer llamadas en su nombre.
Cómo interpretar los errores de autenticación
Toda respuesta de error de la API REST, los hosts de medios y los handshakes de WebSocket tiene el mismo cuerpo JSON, y también lleva el ID de la solicitud en el encabezado x-rhombus-txid:
{
"msg": "Unauthorized",
"error": true,
"errorCode": "CREDENTIAL_EXPIRED",
"errorMsg": "The supplied credential has expired.",
"status": 401,
"timestamp": 1792371600000,
"txid": "yJ2kQw8LTaO1xX4hVd7mPA"
}Decide según el estado y errorCode, muestra o registra errorMsg, e indica txid cuando contactes al soporte. El estado te dice qué parte de la solicitud corregir:
- 401: Rhombus no pudo establecer quién llama. La credencial falta, está mal formada, es desconocida, venció o fue revocada. Corrige o reemplaza la credencial.
- 403: la credencial es válida, pero no tiene permitido hacer esto. Cambia el rol, los scopes de OAuth, la organización o los límites del token; una credencial nueva del mismo tipo no sirve.
| Estado | errorCode | Qué revisar |
|---|---|---|
| 401 | UNAUTHENTICATED | No se presentó ninguna credencial: x-auth-scheme o el encabezado de la credencial falta o está mal escrito, o se envió una clave de API como parámetro de consulta |
| 401 | INVALID_CREDENTIAL | El valor está dañado (al copiar y pegar, espacios en blanco), pertenece a la otra región o se envió con el esquema equivocado; o ya no existe: una clave eliminada, un token federado revocado o cuya credencial de origen ya no existe, un access token ya reemplazado por una renovación |
| 401 | CREDENTIAL_EXPIRED | Renueva el access token de OAuth, genera un token federado nuevo o rota una clave que llegó a su expiresAtMs |
| 401 | CREDENTIAL_REVOKED | Se revocó la autorización de OAuth: el usuario, un administrador, o automáticamente al reutilizarse un refresh token ya reemplazado. Inicia sesión de nuevo |
| 401 | CERTIFICATE_MISMATCH | Client : presenta el certificado emitido para esta clave, con el esquema api (las claves con certificado funcionan solo en api2) |
| 403 | PERMISSION_REQUIRED | El rol de la clave (Permisos). Para un token de OAuth, también sus scopes: un scope faltante agrega WWW-Authenticate: |
| 403 | PARTNER_CLIENT_ACCESS_DENIED | Tu cuenta de partner no gestiona la organización de x-auth-org |
| 403 | DOMAIN_NOT_ALLOWED | Un token federado generado con un domain se usó desde otro origen, o desde un cliente que no envía Origin ni Referer (El campo domain) |
| 403 | DEVICE_SCOPE_MISMATCH | Se usó un token federado limitado a un dispositivo para otro dispositivo |
| 400 | INVALID_AUTH_ORG | x-auth-org no es un UUID de organización válido |
| 404 | NOT_FOUND | La ruta /api no existe. Las rutas distinguen mayúsculas de minúsculas, así que una mayúscula equivocada también recibe 404 |
| 429 | RATE_LIMITED | El límite de solicitudes de tu organización, o un límite por cámara para clips y fotogramas. Espera Retry-After segundos (Límites de solicitudes) |
| 503 | SERVICE_UNAVAILABLE | No se pudo verificar la autenticación. Reintenta con espera exponencial |
Algunas operaciones informan una acción rechazada con HTTP 200 y "error": true en el cuerpo, así que revisa el cuerpo además del estado. La página Errores tiene el catálogo completo de códigos y las reglas de reintento.
Los hosts de medios y el WebSocket de eventos tienen sus propios casos de error; consulta Medios y transmisiones y Autenticación de WebSocket.
Próximos pasos
Crea una clave, elige su rol, usa mTLS, rota, renueva y revoca
Tokens de corta duración para navegadores, apps móviles y cámaras en tu LAN
Instantáneas, video en vivo y grabado, clips, audio y enlaces compartidos
Roles, scopes de OAuth, rotación sin tiempo de inactividad y el registro de auditoría