# Introducción El FACETID (ID de faceta) es un identificador único utilizado en FIDO2/WebAuthn para aplicaciones Android que proporciona: | Característica | Descripción | | --- | --- | | Verificación de Identidad de la App | Identifica de manera única **qué aplicación Android** está solicitando credenciales FIDO2, basado en el **certificado de firma** de la app. | | Previene la Suplantación de Aplicaciones | Solo la aplicación firmada con el **mismo certificado** puede acceder a las credenciales creadas bajo ese FACETID. Esto protege contra aplicaciones maliciosas que pretenden ser tu aplicación. | | Vinculación de Credenciales | Las credenciales FIDO2 (claves públicas) están **vinculadas al FACETID**, asegurando que solo puedan ser utilizadas por la misma aplicación en el futuro. | | Ancla de Confianza en WebAuthn | El FACETID se envía durante el registro y la autenticación. Las partes confiables lo utilizan para **validar el origen de la aplicación** y aplicar el control de acceso a nivel de aplicación. | Para usar el Belvo Android SDK para la autenticación biométrica, necesitas generar un FACETID para tu aplicación. Esto es esencial para las operaciones FIDO2/WebAuthn y se utiliza para asegurar que las credenciales estén vinculadas de manera segura a tu aplicación. En esta guía, te guiaremos a través de los pasos para generar un FACETID para tu aplicación Android. ## Generando FACETID Para generar el FACETID de tu aplicación: 1. Localiza el certificado de firma de tu aplicación (generalmente **.jks** o **.keystore**). Por ejemplo: my-release-key.jks 2. Exporta el certificado de firma en formato **.der**. ```shell Exportar Certificado de Firma ## Exportar el certificado keytool -exportcert \ -alias your-key-alias \ -keystore my-release-key.jks \ -storepass your-keystore-password \ -rfc > cert.pem ## Convertir a formato DER openssl x509 -in cert.pem -outform DER -out cert.der ``` 1. Genera el hash SHA-256 del certificado ```shell Generar Hash SHA-256 openssl dgst -sha256 -binary cert.der | openssl base64 -A ``` 1. Convierte Base64 a Base64URL: - Reemplaza `+` con `-` - Reemplaza `/` con `_` - Elimina el relleno `=` al final de la cadena. Por ejemplo, `nabc65V09KlcsLjIWTnaRB8PKXagy9Lbai/5ahhSE08=` se convierte en `nabc65V09KlcsLjIWTnaRB8PKXagy9Lbai_5ahhSE08`. 1. Construye el FACETID ```shell Ejemplo de Construcción de FACETID ## Formato FACETID android:apk-key-hash: ## Ejemplo con hash codificado en Base64URL android:apk-key-hash:nabc65V09KlcsLjIWTnaRB8PKXagy9Lbai_5ahhSE08 ``` 1. Comparte tu FACETID con Belvo. ¡Hecho! ¡Hecho! Has generado exitosamente el FACETID de tu aplicación. Después de compartirlo con Belvo, puedes continuar con la integración del SDK de Android de Belvo para pagos biométricos. ## Script Práctico Nuestro fantástico equipo de desarrolladores ha creado un script práctico para ayudar a automatizar el proceso de generación de FACETID. **Cómo usar:** 1. Guarda el siguiente código como `generate_facetid.sh`. 2. Actualiza las variables `KEYSTORE_PATH`, `ALIAS` y `STOREPASS` con los detalles de tu aplicación. 3. Haz que el script sea ejecutable: `chmod +x generate_facetid.sh` 4. Ejecuta el script: `./generate_facetid.sh` Échale un vistazo a continuación: ```bash FACETID Generation Script #!/bin/bash # === CONFIGURACIÓN === KEYSTORE_PATH="my-release-key.jks" ALIAS="your-key-alias" STOREPASS="your-keystore-password" # === ARCHIVOS TEMPORALES === CERT_PEM="cert.pem" CERT_DER="cert.der" # === 1. Exportar certificado en formato PEM === echo "[*] Exportando certificado a PEM..." keytool -exportcert -alias "$ALIAS" -keystore "$KEYSTORE_PATH" -storepass "$STOREPASS" -rfc > "$CERT_PEM" # === 2. Convertir PEM a DER === echo "[*] Convirtiendo PEM a DER..." openssl x509 -in "$CERT_PEM" -outform DER -out "$CERT_DER" # === 3. Hash SHA-256 + Base64 === echo "[*] Generando hash SHA-256..." BASE64_HASH=$(openssl dgst -sha256 -binary "$CERT_DER" | openssl base64 -A) # === 4. Convertir Base64 a Base64URL === FACET_HASH=$(echo "$BASE64_HASH" | tr '+/' '-_' | tr -d '=') # === 5. Salida === echo "" echo "✅ FACETID:" echo "android:apk-key-hash:$FACET_HASH" ```