Saltare al contenuto

Impostazione Android & Verifica del Backend

GitHub

Sulla piattaforma Android, questo plugin utilizza Lo standard di integrità di Google Play API:

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

Copia nel portapenne cloudProjectNumber per chiamata nelle opzioni del metodo.

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 tuo certificato di firma rilascio
    • verdetti di integrità corrispondono alla tua politica di sicurezza
  1. Backend crea un token unico payload.
  2. L'app chiama createAssertion({ keyId, payload }).
  3. Il backend decodifica il token e verifica 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

Registrazione:

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

Affermazione:

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

Se stai utilizzando Android Setup & Verifica del backend per pianificare la sicurezza e la conformità, connettilo con Utilizza @capgo/capacitor-app-attest per la capacità nativa in Utilizza @capgo/capacitor-app-attest, Encryption per l'implementazione dettagliata in Encryption, Compliance per l'implementazione dettagliata in Compliance, Capgo Scanner di Sicurezza per il workflow del prodotto in Capgo Scanner di Sicurezza, e Capgo Sicurezza per il flusso di lavoro del prodotto in Capgo Sicurezza.