Configuración de iOS y verificación del backend
Copia un prompt de configuración con los pasos de instalación y la guía completa en markdown para este plugin.
Sistema nativo de iOS utilizado
Sección titulada “Sistema nativo de iOS utilizado”En iOS, este plugin utiliza Apple App Attest del DeviceCheck framework.
Requisitos
Sección titulada “Requisitos”- iOS 14+
- Se recomienda un dispositivo físico para flujos de validación reales
- Target de Xcode con la capacidad App Attest habilitada
Xcode setup
Sección titulada “Configuración de Xcode”- Abre el target de tu app iOS en Xcode.
- Ve a Firma y capacidades.
- Haz clic + Capacidad y añade App Attest.
No se requieren permisos personalizados de iOS en Info.plist para App Attest en sí.
Flujo del cliente
Sección titulada “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 tu backend. No los valides en la app.
Flujo de trabajo del backend (iOS)
Sección titulada “Flujo de trabajo del backend (iOS)”Registro (createAttestation)
Sección titulada “Registro (createAttestation)”- El backend crea uno solo
challenge. - La app llama a
createAttestation({ keyId, challenge }). - 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) clientDataHashcoincideSHA256(challenge)
- Guardar el estado de la clave del dispositivo (
keyId, clave pública y metadatos del verificador).
Solicitar protección (createAssertion)
Sección titulada “Solicitar protección (createAssertion)”- El backend crea uno solo
payload(o el hash de la solicitud canónica). - La app llama a
createAssertion({ keyId, payload }). - El backend verifica la firma de la aserción con el material de clave almacenado previamente.
- Aplicar protección contra reenvíos y comprobaciones de TTL de nonce.
Esquema de iOS
Sección titulada “Esquema de iOS”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 policyContrato mínimo de payload del backend
Sección titulada “Contrato mínimo de payload del backend”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.