Introdução
O FACETID (facet ID) é um identificador único usado em FIDO2/WebAuthn para aplicativos Android que fornece:
Recurso | Descrição |
---|---|
Verificação de Identidade do App | Ele identifica de forma única qual aplicativo Android está solicitando credenciais FIDO2, com base no certificado de assinatura do aplicativo. |
Previne Falsificação de Aplicativos | Apenas o aplicativo assinado com o mesmo certificado pode acessar as credenciais criadas sob aquele FACETID. Isso protege contra aplicativos maliciosos que fingem ser seu aplicativo. |
Vinculação de Credenciais | As credenciais FIDO2 (chaves públicas) são vinculadas ao FACETID, garantindo que só possam ser usadas pelo mesmo aplicativo no futuro. |
Âncora de Confiança no WebAuthn | O FACETID é enviado durante o registro e autenticação. As partes confiáveis o utilizam para validar a origem do aplicativo e impor controle de acesso a nível de aplicativo. |
Para usar o Belvo Android SDK para autenticação biométrica, você precisa gerar um FACETID para seu aplicativo. Isso é essencial para operações FIDO2/WebAuthn e é usado para garantir que as credenciais estejam seguramente vinculadas ao seu aplicativo. Neste guia, vamos orientá-lo pelos passos para gerar um FACETID para seu aplicativo Android.
Gerando FACETID
Para gerar o FACETID do seu aplicativo:
- Localize o certificado de assinatura do seu aplicativo (geralmente .jks ou .keystore). Por exemplo: my-release-key.jks
- Exporte o certificado de assinatura no formato .der.
## Exportar o certificado
keytool -exportcert \
-alias your-key-alias \
-keystore my-release-key.jks \
-storepass your-keystore-password \
-rfc > cert.pem
## Converter para o formato DER
openssl x509 -in cert.pem -outform DER -out cert.der
- Gere o hash SHA-256 do certificado
openssl dgst -sha256 -binary cert.der | openssl base64 -A
- Converta Base64 para Base64URL:
- Substitua
+
por-
- Substitua
/
por_
- Remova o preenchimento
=
no final da string.
- Substitua
Por exemplo, nabc65V09KlcsLjIWTnaRB8PKXagy9Lbai/5ahhSE08=
torna-se nabc65V09KlcsLjIWTnaRB8PKXagy9Lbai_5ahhSE08
.
- Construa o FACETID
## Formato do FACETID
android:apk-key-hash:<base64url_encoded_hash>
## Exemplo com hash codificado em Base64URL
android:apk-key-hash:nabc65V09KlcsLjIWTnaRB8PKXagy9Lbai_5ahhSE08
- Compartilhe seu FACETID com a Belvo.
Feito! Você gerou com sucesso o FACETID do seu aplicativo. Depois de compartilhá-lo com a Belvo, você pode continuar com a integração do SDK Android da Belvo para pagamentos biométricos.
Script Prático
Nossa fantástica equipe de desenvolvedores criou um script prático para ajudar a automatizar o processo de geração do FACETID.
Como usar:
- Salve o código abaixo como
generate_facetid.sh
. - Atualize as variáveis
KEYSTORE_PATH
,ALIAS
eSTOREPASS
com os detalhes do seu aplicativo. - Torne o script executável:
chmod +x generate_facetid.sh
- Execute o script:
./generate_facetid.sh
Confira abaixo:
#!/bin/bash
# === CONFIGURAÇÃO ===
KEYSTORE_PATH="my-release-key.jks"
ALIAS="your-key-alias"
STOREPASS="your-keystore-password"
# === ARQUIVOS TEMPORÁRIOS ===
CERT_PEM="cert.pem"
CERT_DER="cert.der"
# === 1. Exportar cert em formato PEM ===
echo "[*] Exportando cert para PEM..."
keytool -exportcert -alias "$ALIAS" -keystore "$KEYSTORE_PATH" -storepass "$STOREPASS" -rfc > "$CERT_PEM"
# === 2. Converter PEM para DER ===
echo "[*] Convertendo PEM para DER..."
openssl x509 -in "$CERT_PEM" -outform DER -out "$CERT_DER"
# === 3. Hash SHA-256 + Base64 ===
echo "[*] Gerando hash SHA-256..."
BASE64_HASH=$(openssl dgst -sha256 -binary "$CERT_DER" | openssl base64 -A)
# === 4. Converter Base64 para Base64URL ===
FACET_HASH=$(echo "$BASE64_HASH" | tr '+/' '-_' | tr -d '=')
# === 5. Saída ===
echo ""
echo "✅ FACETID:"
echo "android:apk-key-hash:$FACET_HASH"