Saltare al contenuto

Setup & Verifica Backend iOS

GitHub

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

  • iOS 14+
  • Eseguire la validazione reale è raccomandato su un dispositivo fisico
  • Target Xcode con capacità App Attest abilitata
  1. Apre il tuo target iOS in Xcode.
  2. Vai a Autenticazione e Capacità.
  3. Clicca + Capacità E aggiungi App Attest.

No sono richieste alcune 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 al tuo backend. Non validare questi dati nell'app.

  1. Backend crea una chiave univoca challenge.
  2. L'app chiama createAttestation({ keyId, challenge }).
  3. Backend verifica l'attestazione App Attest:
    • la catena di certificati è valida e ancorata a 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 verificatore).
  1. Backend crea una chiave univoca payload (o hash di richiesta canonico (input).
  2. Chiamate dell'app createAssertion({ keyId, payload }).
  3. Il backend verifica la firma dell'asserzione con il materiale di chiave precedentemente memorizzato.
  4. Esegui la protezione contro la riproposta e le verifiche TTL del 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"
}

Assertione:

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

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