Saltar al contenido

Configuración de iOS y verificación del backend

GitHub

En iOS, este plugin utiliza Apple App Attest del DeviceCheck framework.

  • iOS 14+
  • Se recomienda un dispositivo físico para flujos de validación reales
  • Target de Xcode con la capacidad App Attest habilitada
  1. Abre el target de tu app iOS en Xcode.
  2. Ve a Firma y capacidades.
  3. Haz clic + Capacidad y añade App Attest.

No se requieren permisos personalizados de iOS en Info.plist para App Attest en sí.

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

Enviar attestation.token y assertion.token a tu backend. No los valides en la app.

  1. El backend crea uno solo challenge.
  2. La app llama a createAttestation({ keyId, challenge }).
  3. El backend verifica la atestación de App Attest:
    • la cadena de certificados es válida y está anclada a Apple App Attest
    • la identidad de la app coincide con tu app (bundleId, equipo)
    • clientDataHash coincide SHA256(challenge)
  4. Guardar el estado de la clave del dispositivo (keyId, clave pública y metadatos del verificador).
  1. El backend crea uno solo payload (o el hash de la solicitud canónica).
  2. La app llama a createAssertion({ keyId, payload }).
  3. El backend verifica la firma de la aserción con el material de clave almacenado previamente.
  4. Aplicar protección contra reenvíos y comprobaciones de TTL de 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

Registration:

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

Aserción:

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

Continuar desde iOS Setup & Backend Verification

Sección titulada “Continuar desde iOS Setup & Backend Verification”

Si estás usando Configuración de iOS y verificación del backend para planificar la seguridad y el cumplimiento, conéctalo con Uso de @capgo/capacitor-app-attest para la capacidad nativa en Uso de @capgo/capacitor-app-attest, Cifrado para los detalles de implementación en Cifrado, Cumplimiento para los detalles de implementación en Cumplimiento, Escáner de seguridad de Capgo para el flujo de trabajo del producto en Capgo Security Scanner, y Seguridad de Capgo para el flujo de trabajo del producto en Capgo Security.