Ir al contenido principal

Para desarrolladores - Validación remota en equipos Minmoe mediante API directa (ISAPI)

Xavier Guereque avatar
Escrito por Xavier Guereque
Actualizado esta semana

En este artículo mencionaremos cómo utilizar la función de validación remota de los dispositivos Minmoe.

La validación remota permite que el dispositivo envíe un evento mediante webpost en formato JSON de la persona que se está autenticando hacia una plataforma tercera, la plataforma tercera valida si la persona tiene acceso o no, luego envía una respuesta al dispositivo y este acepta o deniega el acceso al usuario.

Procedimiento

Primero debemos validar que el dispositivo sí sea compatible con esta función, para esto utilizamos este endpoint:

GET /ISAPI/AccessControl/AcsCfg/capabilities?format=json

En la respueste debemos encontrar esto para confirmar que sí lo soporta.

"remoteCheckDoorEnabled": {
"@opt": [
true,
false
]
}

Luego, utilizamos el siguiente endpoint para configurar el dispositivo:

PUT /ISAPI/AccessControl/AcsCfg?format=json

Body:
{
"AcsCfg": {
"uploadCapPic": true,
"saveCapPic": true,
"uploadCapPicWhenCallEnabled": true,
"voicePrompt": true,
"protocol": "Private",
"showPicture": false,
"showEmployeeNo": false,
"showName": true,
"uploadVerificationPic": true,
"saveVerificationPic": true,
"desensitiseEmployeeNo": true,
"desensitiseName": true,
"saveFacePic": true,
"faceBatchModelingMode": "recognitionPriority",
"remoteCheckDoorEnabled": true,
"checkChannelType": "ISAPIListen",
"needDeviceCheck": false,
"remoteCheckTimeout": 10,
"remoteCheckVerifyMode": 7,
"offlineDevCheckOpenDoorEnabled": false,
"remoteCheckWithISAPIListen": "async",
"remoteCheckUserTypeList": [
"normal",
"visitor",
"unregistered"
],
"uploadVerificationPicType": 0,
"externalCardReaderEnabled": false,
"combinationAuthenticationTimeout": 5,
"combinationAuthenticationLimitOrder": true,
"faceDuplicateCheckEnabled": false,
"userPassJudgeMode": "byAuthResult"
}
}

Donde:

  • remoteCheckDoorEnabled = true, activa la función de validación remota.

  • checkChannelType = ISAPIListen, indica que los eventos los notificará mediante ISAPI Listen

  • remoteCheckTimeout = 10, especifica el tiempo que esperará el dispositivo para una respuesta.

Por último configuraremos el dispositivo para que envíe los eventos mediante ISAPI Listen, para esto utilizamos el siguiente endpoint:

POST /ISAPI/Event/notification/httpHosts

<HttpHostNotificationList>
<HttpHostNotification>
<id>2</id>
<url>/lectura</url>
<protocolType>HTTP</protocolType>
<parameterFormatType>JSON</parameterFormatType
<addressingFormatType>ipaddress</addressingFormatType
<ipAddress>192.168.50.253</ipAddress>
<portNo>8097</portNo>
<eventMode>all</eventMode>
<type>mixedTargetDetection</type>
</HttpHostNotification>
</HttpHostNotificationList>

Si los eventos se enviarán a un nombre de dominio, la configuración sería similar a los siguiente:

POST /ISAPI/Event/notification/httpHosts

<HttpHostNotificationList>
<HttpHostNotification>
<id>2</id>
<url>/lectura</url>
<protocolType>HTTPS</protocolType>
<parameterFormatType>JSON</parameterFormatType
<addressingFormatType>hostname</addressingFormatType
<hostName>syscom.mx</hostName>
<portNo>443</portNo>
<eventMode>all</eventMode>
<type>mixedTargetDetection</type>
</HttpHostNotification>
</HttpHostNotificationList>

Prueba de funcionamiento

En nuestro ejemplo, el dispositivo enviará la información para validación a un servidor web demo.

Cuando el usuario se autentique, en la pantalla aparecerá una leyenda indicando que se está validando remotamente:

En ese momento, el servidor recibirá una notificación de la persona que está intentando autenticar. El evento contendrá la información del usuario y un identificador único para cada evento (serialNo):

Después de validar si el usuario tiene acceso o no, debemos utilizar el siguiente endpoint para indicarle al dispositivo el resultado de la validación remota:

PUT /ISAPI/AccessControl/remoteCheck?format=json

Body:
{
"RemoteCheck":{
"serialNo":1,
"checkResult": "success" /*[success, failed]*/
}
}

Donde:

  • serialNo = 1, es el número de evento del cual estamos validando remotamente.

  • checkResult = success, es el resultado de la validación del usuario.

Al final, aparecerá el mensaje del resultado en el dispositivo:

¿Ha quedado contestada tu pregunta?