Saltare al contenuto

iOS Setup & Verifica del backend

GitHub

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

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

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

Invia attestation.token e assertion.token al tuo backend. Non validare in app.

  1. Backend crea una chiave univoca challenge.
  2. L'applicaazione chiama createAttestation({ keyId, challenge }).
  3. Backend verifica l'attestazione App Attest dell'applicazione:
    • la catena di certificati è valida e ancorata a Apple App Attest
    • l'identità dell'applicaazione corrisponde al tuo app (bundleId, team)
    • clientDataHash corrisponde SHA256(challenge)
  4. Memorizza lo stato della chiave dispositivo (keyId, chiave pubblica e metadati del verificatore).
  1. Backend crea una richiesta unica payload (o input hash di richiesta canonico).
  2. L'app chiama createAssertion({ keyId, payload }).
  3. Backend verifica la firma dell'assertione con il materiale di chiave precedentemente memorizzato.
  4. Applica protezione contro la riproduzione e controlla 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"
}

Affermazione:

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

Prosegui dalla configurazione di iOS e dalla verifica del backend

Sezione intitolata “Prosegui dalla configurazione di iOS e dalla verifica del backend”

Se stai utilizzando Configurazione di iOS e 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.