Zum Inhalt springen

iOS Setup & Backend-Verifizierung

GitHub

Bei iOS wird dieser Plugin die Apple App Attest aus der DeviceCheck framework.

  • iOS 14+
  • Ein physisches Gerät wird empfohlen, um reale Validierungsflüsse durchzuführen
  • Xcode-Ziel mit App Attest-Fähigkeit aktiviert
  1. Öffnen Sie Ihr iOS-App-Ziel in Xcode.
  2. Gehe zu Zertifizierung und Fähigkeiten.
  3. Klicken Sie auf + Fähigkeit und fügen Sie hinzu App-Attest.

Keine benutzerdefinierten iOS-Berechtigungen sind für App Attest selbst erforderlich Info.plist Client-Flow

Abschnitt: Client-Flow

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

und attestation.token zu Ihrem Backend. Validieren Sie sie nicht in der App. assertion.token Hintergrundablauf (iOS)

Abschnitt: Hintergrundablauf (iOS)

Abschnitt: Hintergrundablauf (iOS)
  1. Hintergrund erstellt eine einmalige challenge.
  2. App ruft an createAttestation({ keyId, challenge }).
  3. Hintergrund überprüft die App-Attest-Bestätigung:
    • Zertifikatskette ist gültig und an Apple App Attest angekettet
    • App-Identität entspricht Ihrer App (bundleIdTeam)
    • clientDataHash entspricht SHA256(challenge)
  4. Geräte-Speicher-Schlüssel-Zustand (keyIdöffentliche Schlüssel und Verifizierungs-Metadaten).
  1. Hintergrund erstellt eine einmalige payload (oder einen kanonischen Anforderungs-Hash-Eingabe).
  2. Die App ruft createAssertion({ keyId, payload }).
  3. Hintergrund überprüft die Signatur der Anfrage mit vorher gespeicherten Schlüsselmateria.
  4. Zwingen Sie den Wiederholungsschutz und die Überprüfung der TTL des Nonces.
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

Registrierung:

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

Behauptung:

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

Wenn Sie “ iOS-Einrichtung und Backend-Verifizierung” zum Planen von Sicherheit und Compliance verwenden, verbinden Sie es mit Verwendung von @capgo/capacitor-app-attest für die native Fähigkeit in Verwendung von @capgo/capacitor-app-attest, Verschlüsselung für die Implementierungsdetails in Verschlüsselung, Konzformität für die Implementierungsdetails in Konzformität Capgo Sicherheits-Scanner für den Produktworkflow in Capgo Sicherheits-Scanner, und Capgo Sicherheit für den Produktworkflow in Capgo Sicherheit.