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 llevar 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 administrador

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 = bloqueado temporalmente
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 caso de 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 caducado, 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 expire 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 relleno 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 caducado, 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...