Saltar al contenido

Configuración de iOS y Verificación de Backend

GitHub

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

  • iOS 14+
  • Se recomienda un dispositivo físico para flujos de validación reales
  • Objetivo de Xcode con la capacidad de App Attest habilitada
  1. Abra su objetivo de aplicación iOS en Xcode.
  2. Vaya a Configuración de firma y capacidades.
  3. Haga clic + Capacidad y agregar Atest de Aplicación.

No se requieren permisos iOS personalizados en Info.plist para el Atest de Aplicación 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 envíelos a su servidor de backend. No los validen en la aplicación.

  1. El servidor crea una challenge.
  2. La aplicación llama a createAttestation({ keyId, challenge }).
  3. El servidor 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 aplicación coincide con su aplicación (bundleIdequipo)
    • clientDataHash coincide SHA256(challenge)
  4. Estado de la clave de dispositivo de la tienda (keyIdclave pública, y metadatos del verificador).

Solicitud de protección (createAssertion)

Sección titulada “Solicitar protección (crear aserción)”
  1. El servidor crea una solicitud de una sola vez payload (o el hash de solicitud canónica de entrada).
  2. La aplicación llama createAssertion({ keyId, payload }).
  3. El servidor verifica la firma de la aserción con el material de clave almacenado previamente.
  4. Aplicar protección contra retransmisiones 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

Contrato de contrato de pago backend mínimo

Sección titulada “Contrato de pago backend mínimo”

Registro:

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

Declaración:

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

Continuar desde Configuración de iOS y Verificación de Backend

Título de la sección “Continuar desde Configuración de iOS y Verificación de Backend”

Si estás utilizando Configuración de iOS y Verificación de Backend para planificar la seguridad y la conformidad, conecta con Usando @capgo/capacitor-app-attest para la capacidad nativa en Usando @capgo/capacitor-app-attest Cifrado para el detalle de implementación en Cifrado, Compliance para los detalles de implementación en Compliance Capgo Escáner de Seguridad para el flujo de trabajo del producto en Capgo Escáner de Seguridad, y Capgo Seguridad para el flujo de trabajo del producto en Capgo Seguridad.