Saltar al contenido principal

Autenticación

reCamera utiliza autenticación mediante Token JWT. Después de un inicio de sesión correcto, el dispositivo devuelve un Token a través de la cabecera de respuesta Set-Cookie. Las solicitudes posteriores deben incluir este Token.

Descripción general de los endpoints​

MétodoRutaPropósitoRequiere inicio de sesión
GET/system/keyObtener clave pública RSA (para cambio de contraseña)No
POST/system/loginIniciar sesión y obtener un TokenNo
GET/system/checkComprobar si es el primer inicio de sesiónNo
PUT/system/passwordCambiar la contraseña de administradorSí

Inicio de sesión​

Solicitud​

POST /cgi-bin/entry.cgi/system/login
Content-Type: application/json

Cuerpo de la solicitud:

{
"sUserName": "admin",
"sPassword": "your_password"
}
CampoDescripción
sUserNameNombre de usuario de inicio de sesión, el valor predeterminado es admin
sPasswordContraseña de inicio de sesión, transmitida en texto plano

Respuesta​

{
"iStatus": 0,
"iAuth": 1,
"sWaittime": 0
}
CampoDescripción
iStatus0 = contraseña correcta, -1 = contraseña incorrecta, -3 = bloqueo temporal
iAuth1 = inicio de sesión correcto, 0 = inicio de sesión fallido, 2 = se requiere cambio de contraseña
sWaittimeTiempo de espera en segundos cuando está bloqueado

Obtención del Token​

En un inicio de sesión correcto, las cabeceras de respuesta contienen Set-Cookie:

Set-Cookie: token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9...; Max-Age=86400; Path=/

La vida útil del Token está determinada por Max-Age, con un valor predeterminado de 86400 segundos (24 horas).

Uso del Token​

Todas las solicitudes autenticadas deben incluir el Token en la cabecera Cookie:

Cookie: token=<JWT_TOKEN>

Por ejemplo, para obtener información del dispositivo:

GET /cgi-bin/entry.cgi/system/device-info
Cookie: token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9...

Si el Token falta o ha expirado, el dispositivo devuelve:

{
"code": 401,
"message": "Unauthorized: Invalid token or NO token provided"
}

Bloqueo de inicio de sesión​

El dispositivo aplica un límite de intentos fallidos basado en la IP. Tras contraseñas incorrectas repetidas, iLoginAttempts se incrementa. Cuando se alcanza el límite, el dispositivo devuelve iStatus=-3 con un valor sWaittime. Debes esperar a que caduque el bloqueo antes de volver a intentarlo.

Comprobar primer inicio de sesión​

GET /cgi-bin/entry.cgi/system/check

Respuesta:

{
"bFirst": false
}

bFirst=true indica que el dispositivo está en el flujo de primer inicio de sesión y que se debe cambiar la contraseña predeterminada.

Cambiar contraseña​

Cambiar la contraseña requiere obtener primero una clave pública RSA, luego cifrar las contraseñas antigua y nueva antes de enviarlas.

Obtener clave pública​

GET /cgi-bin/entry.cgi/system/key

Respuesta:

{
"sPublicKey": "-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEA...\n-----END RSA PUBLIC KEY-----"
}
CampoDescripción
sPublicKeyClave pública RSA, utilizada para el cifrado de la contraseña durante el cambio de contraseña

Cifrado de la contraseña​

Calcula el hash SHA256 de la contraseña como una cadena hexadecimal, luego cífralo con la clave pública usando padding RSA PKCS1v15 y, por último, codifica el resultado en Base64.

Enviar el cambio​

PUT /cgi-bin/entry.cgi/system/password
Content-Type: application/json

Cuerpo de la solicitud:

{
"sUserName": "admin",
"sOldPassword": "<encrypted_old_password>",
"sNewPassword": "<encrypted_new_password>"
}
CampoDescripción
sUserNameNombre de usuario
sOldPasswordContraseña antigua cifrada
sNewPasswordContraseña nueva cifrada

Respuesta correcta:

{
"code": 0,
"message": "success"
}

Códigos de error:

CódigoDescripción
10001La nueva contraseña es demasiado débil
10002El Token ha expirado, inicia sesión de nuevo

Después de cambiar la contraseña, el Token actual puede volverse inválido. Inicia sesión de nuevo para obtener un nuevo Token.

Soporte técnico y debate sobre el producto​

Gracias por elegir nuestros productos. Estamos aquí para ofrecerte diversos tipos de soporte y garantizar que tu experiencia con nuestros productos sea lo más fluida posible. Ofrecemos múltiples canales de comunicación para adaptarnos a diferentes preferencias y necesidades.

Loading Comments...