Autenticação
A reCamera usa autenticação por Token JWT. Após um login bem-sucedido, o dispositivo retorna um Token por meio do cabeçalho de resposta Set-Cookie. As requisições subsequentes devem carregar esse Token.
Visão geral dos endpoints
| Método | Caminho | Finalidade | Requer login |
|---|---|---|---|
| GET | /system/key | Obter chave pública RSA (para alteração de senha) | Não |
| POST | /system/login | Fazer login e obter um Token | Não |
| GET | /system/check | Verificar se é o primeiro login | Não |
| PUT | /system/password | Alterar senha de administrador | Sim |
Login
Requisição
POST /cgi-bin/entry.cgi/system/login
Content-Type: application/json
Corpo da requisição:
{
"sUserName": "admin",
"sPassword": "your_password"
}
| Campo | Descrição |
|---|---|
sUserName | Nome de usuário de login, padrão é admin |
sPassword | Senha de login, transmitida em texto simples |
Resposta
{
"iStatus": 0,
"iAuth": 1,
"sWaittime": 0
}
| Campo | Descrição |
|---|---|
iStatus | 0 = senha correta, -1 = senha incorreta, -3 = bloqueado temporariamente |
iAuth | 1 = login bem-sucedido, 0 = login falhou, 2 = é necessário alterar a senha |
sWaittime | Tempo de espera em segundos quando bloqueado |
Obtenção do Token
Em caso de login bem-sucedido, os cabeçalhos de resposta contêm Set-Cookie:
Set-Cookie: token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9...; Max-Age=86400; Path=/
O tempo de vida do Token é determinado por Max-Age, com valor padrão de 86400 segundos (24 horas).
Uso do Token
Todas as requisições autenticadas devem incluir o Token no cabeçalho Cookie:
Cookie: token=<JWT_TOKEN>
Por exemplo, para obter informações do dispositivo:
GET /cgi-bin/entry.cgi/system/device-info
Cookie: token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9...
Se o Token estiver ausente ou expirado, o dispositivo retorna:
{
"code": 401,
"message": "Unauthorized: Invalid token or NO token provided"
}
Bloqueio de login
O dispositivo aplica um limite de tentativas malsucedidas baseado em IP. Após repetidas senhas incorretas, iLoginAttempts é incrementado. Quando o limite é atingido, o dispositivo retorna iStatus=-3 com um valor sWaittime. Você deve aguardar o fim do bloqueio antes de tentar novamente.
Verificar primeiro login
GET /cgi-bin/entry.cgi/system/check
Resposta:
{
"bFirst": false
}
bFirst=true indica que o dispositivo está no fluxo de primeiro login e que a senha padrão deve ser alterada.
Alterar senha
Alterar a senha requer obter primeiro uma chave pública RSA, depois criptografar as senhas antiga e nova antes de enviar.
Obter chave pública
GET /cgi-bin/entry.cgi/system/key
Resposta:
{
"sPublicKey": "-----BEGIN RSA PUBLIC KEY-----\nMIIBCgKCAQEA...\n-----END RSA PUBLIC KEY-----"
}
| Campo | Descrição |
|---|---|
sPublicKey | Chave pública RSA, usada para criptografia de senha durante a alteração de senha |
Criptografia de senha
Calcule o hash SHA256 da senha como uma string hexadecimal, depois criptografe-o com a chave pública usando preenchimento RSA PKCS1v15 e, por fim, codifique o resultado em Base64.
Enviar alteração
PUT /cgi-bin/entry.cgi/system/password
Content-Type: application/json
Corpo da requisição:
{
"sUserName": "admin",
"sOldPassword": "<encrypted_old_password>",
"sNewPassword": "<encrypted_new_password>"
}
| Campo | Descrição |
|---|---|
sUserName | Nome de usuário |
sOldPassword | Senha antiga criptografada |
sNewPassword | Nova senha criptografada |
Resposta de sucesso:
{
"code": 0,
"message": "success"
}
Códigos de erro:
| Código | Descrição |
|---|---|
10001 | Nova senha é muito fraca |
10002 | Token expirado, faça login novamente |
Após alterar a senha, o Token atual pode se tornar inválido. Faça login novamente para obter um novo Token.
Suporte técnico e discussão sobre o produto
Obrigado por escolher nossos produtos! Estamos aqui para oferecer diversos tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.