En esta sección, encontrarás una lista de las mejores prácticas para la implementación de la SDK de la plataforma Unico IDCloud.
Unico proporciona un conjunto de PoC (Prueba de Concepto) que son implementaciones en los diversos lenguajes soportados por la SDK, que presentan ejemplos funcionales de código con los flujos y métodos en el contexto de la SDK, con fines didácticos, facilitando la comprensión de la secuencia esperada y su adaptación al código que debe ser implementado por nuestros clientes. Puedes consultar las PoCs disponibles en este enlace y solicitarlas a través de la apertura de un ticket con nuestro equipo de atención mediante el portal de clientes.
Constantemente, las SDKs evolucionan para garantizar mayor seguridad y nuevos recursos y funcionalidades. Es esencial que los clientes mantengan una rutina de actualizaciones, además de tener agilidad en las actualizaciones críticas.
Para más detalles, consulta la política de actualizaciones de las SDKs.
Es importante asegurarse de realizar la actualización a la versión más reciente disponible:
Android: [lista de versiones];
IOS: [lista de versiones];
Flutter: [lista de versiones];
Web: [lista de versiones].
Sabemos que su aplicación hace uso de diversas bibliotecas y funcionalidades, a menudo cargadas de forma simultánea con la SDK de Unico. Como buena práctica de actualización, evite realizar el proceso de actualización de nuestra SDK al mismo tiempo que actualiza alguna otra funcionalidad/biblioteca, ya que, al encontrarse con un fallo y/o cambio de comportamiento, puede resultar un desafío entender cuál es la causa raíz. Recomendamos realizar las actualizaciones por separado para garantizar un mayor control en las validaciones, además de utilizar nuestro entorno de homologación.
Si tiene problemas, abra un ticket en nuestro portal de clientes con la siguiente información (para agilizar el proceso):
¿Cuál es el lenguaje de la SDK que está intentando actualizar?
Si es una implementación móvil (Android o iOS), ¿es nativa o híbrida (proporcione detalles)?
En caso de implementación en JavaScript, ¿qué framework está utilizando?
¿Cuál es la versión actual de la SDK que está intentando actualizar? (no es necesario si se trata de una nueva instalación)
¿Cuál es la nueva versión que está intentando instalar/actualizar?
Por favor, proporcione la API Key que está utilizando.
¿La actualización consiste únicamente en la actualización de la SDK o también se están modificando/actualizando/alterando otros componentes/funcionalidades? Si es así, por favor describa qué elementos adicionales están siendo modificados.
Proporcione una descripción de los pasos realizados y los resultados/errores obtenidos.
Por favor, adjunte evidencia e insumos relacionados con el fallo/problema (archivos de registro que contengan fragmentos de errores/fallos, capturas de pantalla y/o videos reproduciendo el problema).
Al realizar una captura de imagen con éxito, el método onSuccessSelfie devuelve un objeto del tipo ResultCamera que tiene 2 atributos:
Base64 de la imagen obtenida, que puede utilizarse si desea mostrar una vista previa de la imagen en su aplicación.
Encrypted, que es un objeto JWT que debe ser enviado en la llamada a las APIs REST. El JWT (Encrypted) debe utilizarse estrictamente durante el envío de la imagen a través de las APIs de Unico. No debe abrirse ni serializarse este atributo, ya que sus características pueden cambiar sin previo aviso. Su uso debe ser exclusivo en las interacciones con las APIs para garantizar la integridad y seguridad de los datos. Unico no se responsabiliza de los daños derivados de esta práctica, ya que las modificaciones pueden ocurrir de manera imprevista. Como se mencionó, la SDK ya proporciona el atributo Base64 para obtener la imagen en cuestión.
Un ejemplo en Swift:
Método: onSuccessSelfie
print("(result.encrypted)")
para Encrypted
print("(result.base64)")
para Base64
print("(result)")
para Encrypted y Base64
En resumen: nunca intente leer ni manipular el atributo Encrypted (JWT).
Por razones de seguridad, el envío del JWT debe realizarse dentro de un período de 10 minutos. Si el envío supera este plazo, el paquete será considerado inválido. Es importante tener en cuenta este tiempo en el flujo del usuario dentro de su aplicación y evitar cambios posteriores.
Por razones de seguridad, el JWT debe enviarse solo una vez al backend de Unico. Es decir, si hay algún problema con el procesamiento de la imagen o algún error en la respuesta, se debe realizar una nueva captura biométrica para generar un nuevo objeto encrypted
, y luego enviar este nuevo archivo al backend de Unico.
La virtualización de dispositivos en las dinámicas de prueba de su aplicación puede ser interpretada como un intento de eludir las capas de seguridad del proveedor de biometría, lo que puede generar los siguientes errores:
Mobile:
73006 - Unable to open camera on emulators
.
Web
73600 - Could not find camera resource
.
73400 - Could not initialize camera
.
Para evitar errores erróneos y trabajo innecesario, las pruebas deben realizarse en dispositivos físicos.
Toda la comunicación y las solicitudes están basadas en las API Keys definidas previamente en la instancia del cliente. Es crucial que su implementación utilice la misma API Key en el flujo de captura y en el flujo de envío, ya que esto previene errores de integración, facilita la validación y mejora la trazabilidad de los procesos y flujos.
Si tiene dudas sobre su API Key, consulte con el soporte técnico.
En el proceso de realización de pruebas y validaciones, es común mantener el DevTools abierto para la verificación de flujos y solicitudes. Sin embargo, no se debe considerar el método de validación de captura en estas pruebas, ya que la SDK lo identifica como posible fraude e invalida la solicitud cuando se envía al backend. Por lo tanto, cuando se realicen flujos de extremo a extremo, es esencial mantener el DevTools desactivado y seguir con la captura normal.
Al subir versiones para la SDK WEB, si hay actualización también de archivos resources, siempre elimine el archivo antiguo e inserte los nuevos en la carpeta Public, ya que puede ocurrir que los archivos tengan el mismo nombre y no sean reemplazados. Asegúrese también de verificar que no haya caché interna de los archivos resources antiguos después de la actualización y nuevo build.
Para la implementación en aplicaciones Flutter, siempre se debe utilizar nuestro plugin específico para este propósito. Reiteramos que no intenten implementar las versiones nativas de nuestra SDK (Android, iOS) mediante bridges en aplicaciones Flutter, ya que normalmente esta acción genera errores que no han sido mapeados por el equipo de ingeniería de Unico.
La implementación de la SDK tiene 2 etapas hasta la captura de la foto y generación del encrypted:
Preparación de la cámara;
Apertura de la cámara.
En la primera etapa, es necesario pasar el tipo de cámara que se utilizará y el bundle con la información de la API KEY. Si todo está correcto, la autenticación con el backend de la SDK se realiza con éxito. En la segunda etapa, se realiza la apertura de la cámara, generalmente a partir de un clic en el botón del usuario. La autenticación con el backend de la SDK puede tomar algunos segundos, por lo que poner esta etapa junto con la apertura de la cámara al hacer clic en el botón puede generar frustración y sensación de lentitud. Por lo tanto, lo ideal es que, durante la carga de la página de instrucciones de captura, ya se esté realizando la preparación de la cámara, así cuando el usuario decida abrir la cámara, la carga será más rápida y la experiencia final será mejor.
De esta manera, optimizará su implementación y mejorará la velocidad de su aplicación, disminuyendo la percepción de lentitud en el procesamiento para su usuario final.
Siempre realice la limpieza de caché antes de realizar el build y subir nuevas versiones. Si no se realiza esta limpieza, podría encontrarse con errores relacionados con el caché de dependencias que posiblemente hayan sido eliminadas o actualizadas en nuevas versiones. A continuación, algunos ejemplos de cómo hacerlo:
Para Flutter, siga el comando:
Eliminar el archivo: pubspec.lock
o;
flutter pub get
.
Para iOS, siga el comando:
pod cache clean 'unicocheck-ios' –all
o;
pod cache clean –all
o;
Eliminar el archivo podfile.lock
y ejecutar pod install
.
Para Android en build Gradle, siga el comando:
./gradlew clean
.
La ofuscación es un proceso de transformación del bytecode en una forma menos legible para los humanos, dificultando así la ingeniería inversa. La herramienta de ofuscación que utilices en tu aplicación puede afectar el funcionamiento de la SDK, por lo que es necesario que esta no ofusque el código de la SDK. Un buen indicador de problemas de ofuscación es verificar si tu aplicación funciona en modo debug y deja de funcionar cuando realizas el build en modo release, ya que la ofuscación no modifica los archivos en modo debug.
Por lo tanto, es necesario que durante la implementación de la SDK agregues a tus reglas de ofuscación la configuración para la SDK Unico, de lo contrario, enfrentarás problemas al intentar realizar el build del proyecto utilizando la SDK para iOS, Android o Flutter.
A continuación, los enlaces para las configuraciones de ofuscación para cada sistema operativo:
Unico proporciona un entorno de homologación para que los clientes puedan realizar pruebas y validaciones de sus implementaciones antes de realizar cualquier cambio o alteración en el entorno de producción. Reforzamos la importancia de esta etapa para garantizar una mayor seguridad al realizar la ventana de cambio en producción. Asegúrate de que tu plan de pruebas incluya la mayor cantidad de validaciones y escenarios que encontrarás en el entorno de producción (como variación de dispositivos, pruebas con limitación de conectividad, etc.).
Importante: recuerda que el entorno de homologación tiene su propio conjunto de parametrizaciones/configuraciones, como cuentas de servicio y claves de API específicas (diferentes al entorno de producción).
Cree un guion / lista de verificación teniendo en cuenta el plan de gestión de cambios de su empresa;
Asegúrese de estar utilizando las configuraciones correctas de producción (como la clave API correcta);
Garantice que tenga un plan de retroceso (recuperación) en caso de falla al subir la nueva versión a producción;
Al encontrarse con una falla, recopile todos los registros y datos necesarios;
Reactive la versión anterior funcional para mitigar el impacto en producción;
Abra un ticket en nuestro portal de clientes con toda la información y los insumos sobre la falla para que podamos apoyarlo.
¿No encontraste algo o aún necesitas ayuda? Si ya eres cliente o socio, puedes ponerte en contacto a través del Centro de Ayuda.