Saltare al contenuto

IOS Setup & Verifica backend

GitHub

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

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

Non sono richieste autorizzazioni iOS personalizzate 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',
});

Inviare attestation.token e assertion.token invia i dati ai tuoi server. Non validare i dati nell'applicazione.

  1. Backend crea una chiave di attivazione univoca challenge.
  2. App chiama createAttestation({ keyId, challenge }).
  3. Backend verifica l'attestazione App Attest:
    • la catena di certificati è valida e annullata a Apple App Attest
    • l'identità dell'app corrisponde alla tua app (bundleIdteam)
    • clientDataHash corrisponde SHA256(challenge)
  4. Stato della chiave dispositivo del negozio (keyIdchiave pubblica, e metadati del verificatore).
  1. Backend crea una richiesta temporanea payload (o input hash di richiesta canonico).
  2. L'app chiama createAssertion({ keyId, payload }).
  3. Backend verifica la firma dell'asserzione con il materiale di chiave precedentemente memorizzato.
  4. Attiva la protezione dal replay e i controlli TTL per il 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

Iscrizione:

{
"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 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 Crittografia per il dettaglio di implementazione in Crittografia, Conformità per il dettaglio di implementazione in Conformità Capgo Scansionatore di Sicurezza per il flusso di lavoro del prodotto in Capgo Scansionatore di Sicurezza, e Capgo Sicurezza per il flusso di lavoro del prodotto in Capgo Sicurezza.