Passer à la navigation principale

Configuration Android & vérification du backend

Sur Android, ce plugin utilise Standard de l'intégrité Google Play API:

  • prepareIntegrityToken pendant prepare()
  • requestStandardIntegrityToken pour createAttestation() et createAssertion()
  • Application Android distribuée à travers l'écosystème Google Play
  • Services Google Play disponibles sur le dispositif
  • Intégrité de Play activée API pour votre application
  • Numéro de projet Cloud Google configuré
  1. Activer Intégrité de Play API dans votre projet Cloud Google.
  2. Ouvrez le console de Play et configurez l'accès à l'intégrité de Play pour votre application.
  3. Fournir cloudProjectNumber au plugin.
capacitor.config.ts
plugins: {
AppAttest: {
cloudProjectNumber: '123456789012',
},
}

Vous pouvez également passer cloudProjectNumber par appel dans les options de méthode.

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 s'agit d'un jeton d'intégrité Play et doit être décodé côté serveur.

  1. Backend crée une assertion unique challenge.
  2. L'application appelle createAttestation({ keyId, challenge }).
  3. Le backend appelle Google decodeIntegrityToken API.
  4. Le backend vérifie au minimum :
    • requestDetails.requestHash === base64url(SHA256(challenge))
    • appIntegrity.packageName est égal à votre identifiant d'application Android
    • appIntegrity.certificateSha256Digest contient le digest de votre certificat de signature de version de sortie
    • les verdicts d'intégrité correspondent à votre politique de sécurité
  1. Backend crée une assertion unique payload.
  2. L'application appelle createAssertion({ keyId, payload }).
  3. Backend décode le jeton et vérifie requestHash === base64url(SHA256(payload)).
  4. Exigez la prévention de replay (utilisation unique + TTL) et la politique de verdict d'intégrité.
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

Inscription :

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

Affirmation :

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

Si vous utilisez la configuration Android Setup & Vérification de l'arrière-plan pour planifier la sécurité et la conformité, connectez-la avec Utilisez @capgo/capacitor-app-attest pour la capacité native dans Utilisez @capgo/capacitor-app-attest, Chiffrement pour le détail d'implémentation dans Chiffrement, Conformité pour le détail d'implémentation dans Conformité, Capgo Scanner de sécurité pour le flux de travail du produit dans Capgo Scanner de sécurité, et Capgo Sécurité pour le flux de travail du produit dans Capgo Sécurité.