Sauter au contenu

Configuration & vérification backend de iOS

Sur iOS, ce plugin utilise Apple App Attest à partir du DeviceCheck framework.

  • iOS 14+
  • Un appareil physique est recommandé pour les flux de validation réels
  • Cible Xcode avec la capacité App Attest activée
  1. Ouvrez votre cible d'application iOS dans Xcode.
  2. Allez à Signature et capacités.
  3. Cliquez et ajoutez App Attest Aucune permission iOS personnalisée n'est requise pour App Attest elle-même..

__CAPGO_KEEP_0__ Info.plist __CAPGO_KEEP_0__

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

Envoyer attestation.token et assertion.token à votre backend. N'effectuez pas de validation dans l'application.

  1. Le backend crée un code d'accès unique challenge.
  2. L'application appelle createAttestation({ keyId, challenge }).
  3. La plateforme backend vérifie l'attestation App Attest :
    • la chaîne de certificats est valide et ancrée à Apple App Attest
    • l'identité de l'application correspond à votre application (bundleId, équipe)
    • clientDataHash correspond SHA256(challenge)
  4. Sauvegarde l'état de la clé de magasin (keyId, clé publique et métadonnées de vérificateur).
  1. La plateforme backend crée une demande unique payload (ou hash de requête canonique en entrée).
  2. L'application appele createAssertion({ keyId, payload }).
  3. Le backend vérifie l'empreinte de signature de l'assertion avec le matériel de clé stocké précédemment.
  4. Exigez la protection contre la reprise et les vérifications de TTL de nonce.
sequenceDiagram
participant App as iOS App
participant Plugin as AppAttest plugin
participant Apple as Apple App Attest
participant BE as Backend
BE->>App: one-time challenge
App->>Plugin: prepare()
Plugin->>Apple: generateKey()
Apple-->>Plugin: keyId
App->>Plugin: createAttestation(keyId, challenge)
Plugin->>Apple: attestKey(keyId, SHA256(challenge))
Apple-->>Plugin: attestation token
Plugin-->>App: token + platform + format + keyId
App->>BE: token + challenge + keyId
BE->>BE: verify Apple attestation rules
BE->>App: one-time payload
App->>Plugin: createAssertion(keyId, payload)
Plugin->>Apple: generateAssertion(keyId, SHA256(payload))
Apple-->>Plugin: assertion token
Plugin-->>App: token + platform + format + keyId
App->>BE: token + payload + keyId
BE->>BE: verify signature + replay policy

Inscription :

{
"platform": "ios",
"format": "apple-app-attest",
"keyId": "string",
"challenge": "string",
"token": "string"
}

Assertion :

{
"platform": "ios",
"format": "apple-app-attest",
"keyId": "string",
"payload": "string",
"token": "string"
}

Continuez de la configuration iOS et de la vérification du backend

Section intitulée « Continuez de la configuration iOS & de la vérification du backend »

Si vous utilisez la configuration iOS & de la vérification du backend pour planifier la sécurité et la conformité, connectez-le avec En utilisant @capgo/capacitor-app-attest pour la capacité native dans En utilisant @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é.