Vai al contenuto

Configurazione iOS e verifica backend

GitHub

Su iOS, questo plugin utilizza il framework Apple App Attest presente nella DeviceCheck .

  • iOS 14+
  • Dispositivo fisico consigliato per i flussi di validazione reali
  • Target Xcode con capability App Attest abilitata
  1. Apri il target della tua app iOS in Xcode.
  2. Vai su Firma e Capabilities.
  3. Clicca su + Funzionalità e aggiungi App Attest.

Non sono necessarie permessi iOS personalizzati in Info.plist per App Attest stesso.

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',
});

Invia attestation.token e assertion.token al tuo backend. Non validarli all'interno dell'app.

  1. Il backend crea un challenge monouso challenge.
  2. L'app chiama createAttestation({ keyId, challenge }).
  3. Il backend verifica l'attestazione App Attest:
    • la catena di certificati è valida e ancorata ad Apple App Attest
    • l'identità dell'app corrisponde alla tua app (bundleId, team)
    • clientDataHash corrisponde SHA256(challenge)
  4. Memorizza lo stato della chiave del dispositivo (keyId, chiave pubblica e metadati del verifier).
  1. Il backend crea un challenge monouso payload (o l'input dell'hash della richiesta canonica).
  2. L'app chiama createAssertion({ keyId, payload }).
  3. Il backend verifica la firma dell'assertion con il materiale della chiave precedentemente salvato.
  4. Enforce replay protection and nonce TTL checks.
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

Registrazione:

{
"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"
}

Se stai usando Configurazione iOS & Verifica Backend per pianificare sicurezza e compliance, collegalo a Utilizzo di @capgo/capacitor-app-attest per la funzionalità nativa in Utilizzo di @capgo/capacitor-app-attest, Crittografia per i dettagli di implementazione della crittografia, Conformità per i dettagli di implementazione in Compliance, Security Scanner di Capgo per il workflow di prodotto in Capgo Security Scanner, e Sicurezza Capgo per il workflow di prodotto in Capgo Security.