Ir al contenido

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

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 construyendoUsaDetalles
Un servicio de backend, un script o una tarea programada en una organizaciónClave de APIClaves de API y certificados
Un backend cuya política de seguridad exige TLS mutuoClave 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ónAccess token de OAuth ("Iniciar sesión con Rhombus")Iniciar sesión con Rhombus
Una herramienta para un MSP o revendedor que gestiona muchas organizaciones clienteClave de API de partner o token de OAuth de partnerAPI 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ámaraToken federado, generado por tu backendTokens federados
Un enlace que cualquiera puede abrir para ver una cámaraEnlace de transmisión compartidaMedios y transmisiones
Advertencia

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

CredencialAPI REST (api2)Medios y videoWebSocket de eventos (ws)Cámaras en tu LAN
Clave de APIEncabezadosEncabezadosEncabezados del handshakeNo se acepta
Clave de API de certificadoCertificado de cliente más encabezados (solo hosts api2)No se acepta; usa una clave de API o un token federadoNo se aceptaNo se acepta
Access token de OAuthEncabezadosEncabezadosEncabezados del handshakeNo se acepta
Clave, certificado o token de OAuth de partnerIgual que la credencial de organización, más x-auth-orgIgual, más x-auth-orgIgual, más x-auth-org (obligatorio)No se acepta
Token federadoEncabezados o parámetros de consultaEncabezados o parámetros de consultaEncabezados o parámetros de consultaEncabezados 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):

DestinoHost de EE. UU.
API RESThttps://api2.rhombussystems.com
Medios y videohttps://media.rhombussystems.com, más los hosts de streaming por cámara que devuelve getMediaUris
WebSocket de eventoswss://ws.rhombussystems.com:8443/websocket
Cámaras en tu LANhttps://<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:

Credencialx-auth-schemeEncabezado de la credencialAdicional
Clave de APIapi-tokenx-auth-apikey—
Clave de API de certificadoapix-auth-apikeyCertificado de cliente TLS
Access token de OAuthapi-oauth-token, u omítelox-auth-access-token, o Authorization: Bearer <token>—
Token federadofederated-tokenx-auth-ftAmbos pueden ir como parámetros de consulta: ?x-auth-scheme=federated-token&x-auth-ft=<token>
Clave, certificado o token de OAuth de partnerLos mismos tres esquemas; partner-api-token, partner-api y partner-api-oauth-token se aceptan como aliasLos mismos encabezadosx-auth-org: <client org UUID> (consulta Credenciales de partner)
bash
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 '{}'

Reglas que se aplican en todas partes:

  • Los nombres de los encabezados y el valor del esquema son exactos. x-auth-scheme: api-token funciona; Api-Token no.
  • Authorization: Bearer lleva solo un access token de OAuth, en la API REST, los hosts de medios y el WebSocket de eventos. Un encabezado Bearer sin x-auth-scheme se interpreta como un access token de OAuth. Las claves de API nunca van en Authorization.
  • Solo los tokens federados van en una URL. x-auth-scheme y x-auth-ft pueden ser parámetros de consulta; las claves de API, los access tokens de OAuth y x-auth-org se 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 el durationSec que 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/json en 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-org es 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 siempre x-auth-org. Una solicitud de partner sin él sigue funcionando, pero la respuesta lleva Deprecation: true y Sunset: 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 sin x-auth-org con 403 PERMISSION_REQUIRED.
  • Un valor mal formado devuelve 400 INVALID_AUTH_ORG; una organización cliente que tu cuenta de partner no gestiona devuelve 403 PARTNER_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:

json
{
  "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.
EstadoerrorCodeQué revisar
401UNAUTHENTICATEDNo 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
401INVALID_CREDENTIALEl 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
401CREDENTIAL_EXPIREDRenueva el access token de OAuth, genera un token federado nuevo o rota una clave que llegó a su expiresAtMs
401CREDENTIAL_REVOKEDSe 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
401CERTIFICATE_MISMATCHClient certificate does not match the api key: presenta el certificado emitido para esta clave, con el esquema api (las claves con certificado funcionan solo en api2)
403PERMISSION_REQUIREDEl rol de la clave (Permisos). Para un token de OAuth, también sus scopes: un scope faltante agrega WWW-Authenticate: Bearer error="insufficient_scope", scope="<required>"
403PARTNER_CLIENT_ACCESS_DENIEDTu cuenta de partner no gestiona la organización de x-auth-org
403DOMAIN_NOT_ALLOWEDUn 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)
403DEVICE_SCOPE_MISMATCHSe usó un token federado limitado a un dispositivo para otro dispositivo
400INVALID_AUTH_ORGx-auth-org no es un UUID de organización válido
404NOT_FOUNDLa ruta /api no existe. Las rutas distinguen mayúsculas de minúsculas, así que una mayúscula equivocada también recibe 404
429RATE_LIMITEDEl 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)
503SERVICE_UNAVAILABLENo 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