Saltare al contenuto

Configurazione Android & Verifica del backend

GitHub

L'interfaccia nativa Android utilizzata

Sistema nativo Android utilizzato

Sull'Android, questo plugin utilizza Google Play Integrity Standard API:

  • prepareIntegrityToken durante prepare()
  • requestStandardIntegrityToken per createAttestation() e createAssertion()
  • App Android distribuita attraverso l'ecosistema di Google Play
  • Servizi di Google Play disponibili sul dispositivo
  • Play Integrity API abilitato per la tua app
  • Numero di progetto di Google Cloud configurato
  1. Abilita Play Integrity API nel tuo progetto di Google Cloud.
  2. Apri Console di Gioco e configura l'accesso a Play Integrity per la tua app.
  3. Fornisci cloudProjectNumber al plugin.
capacitor.config.ts
plugins: {
AppAttest: {
cloudProjectNumber: '123456789012',
},
}

Puoi anche passare cloudProjectNumber Sottosezione intitolata “Client flow”

Flusso del client

Copiarlo nella clipboard
import { AppAttest } from '@capgo/capacitor-app-attest';
const { keyId } = await AppAttest.prepare({
cloudProjectNumber: '123456789012',
});
const attestation = await AppAttest.createAttestation({
keyId,
challenge: 'backend-registration-challenge',
});
const assertion = await AppAttest.createAssertion({
keyId,
payload: 'backend-request-payload',
});

token è un token di integrità Play e deve essere decodificato sul lato server.

  1. Backend crea un token unico challenge.
  2. L'app chiama createAttestation({ keyId, challenge }).
  3. Backend chiama Google decodeIntegrityToken API.
  4. Backend verifica almeno:
    • requestDetails.requestHash === base64url(SHA256(challenge))
    • appIntegrity.packageName è uguale all'ID dell'applicazione Android
    • appIntegrity.certificateSha256Digest contiene il digest del certificato di firma di rilascio
    • gli esiti di integrità corrispondono alla politica di sicurezza
  1. Backend crea un token unico payload.
  2. L'app chiama createAssertion({ keyId, payload }).
  3. Il backend decodifica il token e controlla requestHash === base64url(SHA256(payload)).
  4. Prevenire la riproduzione (singola utilizzo + TTL) e politica di verdetto di integrità.
sequenceDiagram
participant App as Android App
participant Plugin as AppAttest plugin
participant PlaySDK as Play Integrity SDK
participant BE as Backend
participant Google as decodeIntegrityToken API
App->>Plugin: prepare(cloudProjectNumber)
Plugin->>PlaySDK: prepareIntegrityToken()
PlaySDK-->>Plugin: provider handle (keyId)
BE->>App: one-time challenge
App->>Plugin: createAttestation(keyId, challenge)
Plugin->>PlaySDK: requestStandardIntegrityToken(requestHash)
PlaySDK-->>Plugin: integrity token
Plugin-->>App: token + platform + format + keyId
App->>BE: token + challenge + keyId
BE->>Google: decodeIntegrityToken(token)
Google-->>BE: decoded payload
BE->>BE: verify requestHash + app identity + verdicts
BE->>App: one-time payload
App->>Plugin: createAssertion(keyId, payload)
Plugin->>PlaySDK: requestStandardIntegrityToken(requestHash)
PlaySDK-->>Plugin: integrity token
App->>BE: token + payload + keyId
BE->>Google: decodeIntegrityToken(token)
Google-->>BE: decoded payload
BE->>BE: verify requestHash + replay policy

Sezione intitolata “Contratto di payload backend minimo”

Sezione intitolata “Contratto di payload backend minimo”

Registration:

{
"platform": "android",
"format": "google-play-integrity-standard",
"keyId": "string",
"challenge": "string",
"token": "string"
}

Verifica:

{
"platform": "android",
"format": "google-play-integrity-standard",
"keyId": "string",
"payload": "string",
"token": "string"
}

Se stai utilizzando Setup Android e Verifica Backend per pianificare la sicurezza e la conformità, connettilo con Utilizzo di @capgo/capacitor-app-attest per la capacità nativa in Utilizzo di @capgo/capacitor-app-attest, La crittografia per il dettaglio di implementazione in La crittografia, La conformità per i dettagli di implementazione in Compliance, Capgo Scanner di Sicurezza per il flusso di lavoro del prodotto in Capgo Scanner di Sicurezza, e Capgo Sicurezza per il flusso di lavoro del prodotto in Capgo Sicurezza.