Skip to content
Última actualización

Introducción

El FACETID (ID de faceta) es un identificador único utilizado en FIDO2/WebAuthn para aplicaciones Android que proporciona:

CaracterísticaDescripción
Verificación de Identidad de la AppIdentifica 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 AplicacionesSolo 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 CredencialesLas 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 WebAuthnEl 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.
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
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
Ejemplo de Construcción de FACETID
## Formato FACETID
android:apk-key-hash:<base64url_encoded_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:

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"