El sistema de autenticación biométrica tiene como objetivo verificar la identidad de un usuario nuevo a través de:
La captura del documento de identidad (DNI o cédula).
La captura de una foto selfie en tiempo real.
La validación automática de las imágenes mediante servicios de visión computarizada (AWS Rekognition).
La comparación facial entre el documento y la selfie para confirmar que pertenecen a la misma persona.
Arquitectura
Capa | Componente | Descripción |
|---|---|---|
Frontend | Web app o módulo embebido en el flujo de registro | Solicita al usuario subir las fotos del documento y selfie. Muestra resultados y mensajes de validación. |
Backend | API Serverless (AWS Lambda + API Gateway) | Gestiona las solicitudes de validación, genera URLs prefirmadas para S3, y orquesta las llamadas a AWS Rekognition. |
Almacenamiento | Amazon S3 | Guarda las imágenes temporalmente con URLs prefirmadas y control de acceso estricto. |
Motor biométrico | AWS Rekognition | Analiza, valida y compara las imágenes. Incluye detección de rostros, validación de integridad y comparación facial. |
Seguridad e Identidad | AWS Cognito | Maneja la autenticación de usuarios para el frontend y firma de solicitudes. |
Diagramas de Flujo
Diagrama de Secuencia
sequenceDiagram participant lapachos as Lapachos Lending participant biometria as Biometria participant rekonition as Rekonition autonumber lapachos ->> biometria: Nuevo Cliente Note over biometria: Solicitar Foto Carnet Identidad biometria ->> rekonition: Envia foto rekonition -->>+ biometria: resultado biometria ->>- biometria: Evaluo Validez Note over biometria: Solicitar Foto Persona biometria ->> rekonition: Envia foto rekonition -->>+ biometria: resultado biometria ->> biometria: Evaluo Validez biometria ->>- rekonition: Envia las dos fotos rekonition -->>+ biometria: resultado biometria ->> biometria: Evaluo Si son la misma persona Note over biometria: Renderizo resultado y continua el proceso biometria ->>- lapachos: Endpoint resultado de la validación
Pantallas
https://app.visily.ai/projects/099353ee-393c-477f-aeee-7c6f2ddaac54/boards/1499996
API REST
POST /card-id-photo
Content-Type: application/json
{
"imageKey": "uploads/users/12345/card-id.jpg"
}
Responses
200 OK – Documento válido
{
"valid": true,
"message": "It's a valid document",
"confidence": 98.7
}
400 Bad Request – Imagen no válida
{
"valid": false,
"message": "The image does not contain a valid ID document or face."
}
500 Internal Server Error – Error en el procesamiento
{
"valid": false,
"message": "Internal error validating the document. Please try again later."
}
POST /selfie-photo
Request
POST /selfie-photo
Content-Type: application/json
{
"imageKey": "uploads/users/12345/selfie.jpg"
}
200 OK – Rostro válido
{
"valid": true,
"message": "Selfie and facial match approved successfully",
"coincidence": 99.2
"confidence": 99.2
}
400 Bad Request – Sin rostro o rostro inválido
{
"valid": false,
"message": "No face detected or image quality is too low."
}
400 Bad Request – Rostro no coincide
{
"valid": false,
"message": "The face does not match the face on the ID photo"
}
500 Internal Server Error – Error en validación
{
"valid": false,
"message": "Error validating selfie. Please try again later."
}


