Saltare al contenuto

__CAPGO_KEEP_0__

Su iOS, questo plugin utilizza Apple App Attest dal DeviceCheck framework.

  • iOS 14+
  • Si consiglia un dispositivo fisico per le flussi di validazione reali
  • Target Xcode con capacità App Attest abilitata
  1. Apri il tuo target di app iOS in Xcode.
  2. Vai a Sottoscrizione e capacità.
  3. Clicca Capacità e aggiungi App Attest.

Nessuna autorizzazione iOS personalizzata è richiesta 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 validare in questo modo.

  1. Il backend crea un codice unico challenge.
  2. L'app chiama createAttestation({ keyId, challenge }).
  3. Il backend verifica l'attestazione App Attest dell'app:
    • la catena di certificati è valida e annulla a Apple App Attest
    • l'identità dell'app corrisponde alla tua app (bundleId, squadra)
    • clientDataHash matches SHA256(challenge)
  4. Memorizza stato della chiave dispositivo (keyId, chiave pubblica e metadati di verifica).
  1. Backend crea una richiesta unica payload (o input hash di richiesta canonico).
  2. L'app chiama createAssertion({ keyId, payload }).
  3. Backend verifica firma di attestazione con materiale di chiave precedentemente memorizzato.
  4. Applica protezione contro la riproposta e controlli TTL per 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

Registrazione:

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

Affermazione:

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

Se stai utilizzando iOS Setup & Verifica backend per pianificare la sicurezza e la conformità, connettilo con Utilizzare @capgo/capacitor-app-attest per la capacità nativa in Utilizzare @capgo/capacitor-app-attest Crittografia per il dettaglio di implementazione in Crittografia Conformità per il dettaglio di implementazione in Conformità Capgo Scanner di Sicurezza per il workflow del prodotto in Capgo Scanner di Sicurezza, e Capgo Sicurezza per il workflow del prodotto in Capgo Sicurezza.