Configuración de iOS y verificación de backend
Copiar un prompt de configuración con los pasos de instalación y la guía de markdown completa para este plugin.
Sistema nativo de iOS utilizado
Sección titulada “Sistema nativo de iOS utilizado”En iOS, este plugin utiliza Attest de la App de Apple desde el DeviceCheck framework.
Requisitos
Sección titulada “Requisitos”- iOS 14+
- Se recomienda un dispositivo físico para la validación de flujos reales
- Objetivo de Xcode con la capacidad de App Attest habilitada
Configuración de Xcode
Sección titulada “Configuración de Xcode”- Abra su objetivo de aplicación iOS en Xcode.
- Vaya a Firma y capacidades.
- Haga clic Agregar capacidad y agregar App Attest.
No se requieren permisos iOS personalizados en Info.plist para App Attest en sí.
Flujo del cliente
Título de la sección “Flujo del cliente”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 su backend. No los validen en la aplicación.
Flujo de backend (iOS)
Título de la sección “Flujo de backend (iOS)”Registro (createAttestation)
Sección titulada “Registro (createAttestation)”- Backend crea una clave única
challenge. - La aplicación llama
createAttestation({ keyId, challenge }). - Backend verifica la attestación de la aplicación 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 (
bundleId, equipo) clientDataHashCoincideSHA256(challenge)
- Almacena el estado de la clave del dispositivo (
keyId, clave pública y metadatos del verificador).
Solicita protección (createAssertion)
Sección titulada “Solicitud de protección (crear aserción)”- El backend crea una solicitud de una sola vez
payload(o introduzca el hash de solicitud canónica). - La aplicación llama
createAssertion({ keyId, payload }). - El backend verifica la firma de la aserción con el material de clave almacenado previamente.
- Aplicar protección contra retransmisiones y comprobaciones de TTL de nonce.
Esquema de iOS
Copiar a portapapelessequenceDiagram 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 policySección titulada “Contrato de pago backend mínimo”
Registro: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"}Sigue adelante desde la configuración de iOS y la verificación de backend
Sección titulada “Sigue adelante desde la configuración de iOS y la 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 el detalle 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.