Langsung ke konten

Setup iOS & Verifikasi Backend

GitHub

Pada iOS, plugin ini menggunakan Apple App Attest dari DeviceCheck framework.

  • iOS 14+
  • Disarankan menggunakan perangkat fisik untuk alur validasi nyata
  • Target Xcode dengan capability App Attest aktif
  1. Buka target aplikasi iOS Anda di Xcode.
  2. Buka Signing & Capabilities.
  3. Klik + Kapabilitas dan tambahkan App Attest Capgo.

Tidak perlu izin iOS khusus di Info.plist untuk App Attest itu sendiri.

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

Kirim attestation.token dan assertion.token ke backend Anda. Jangan validasi di aplikasi.

  1. Backend membuat sekali pakai challenge.
  2. App memanggil createAttestation({ keyId, challenge }).
  3. Backend memverifikasi attestation App Attest:
    • rantai sertifikat valid dan terhubung ke Apple App Attest
    • identitas aplikasi sesuai dengan aplikasi Anda (bundleId, team)
    • clientDataHash cocok SHA256(challenge)
  4. Simpan status kunci perangkat (keyId, public key, dan metadata verifier).
  1. Backend membuat sekali pakai payload (atau input hash request kanonik).
  2. App memanggil createAssertion({ keyId, payload }).
  3. Backend memverifikasi tanda tangan assertion dengan material kunci yang telah disimpan sebelumnya.
  4. Terapkan proteksi replay dan pengecekan nonce TTL.
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

Registrasi:

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

Assertion:

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

Lanjutkan dari iOS Setup & Backend Verification

Bagian berjudul “Keep going from iOS Setup & Backend Verification”

Jika Anda menggunakan Setup iOS & Verifikasi Backend untuk merencanakan keamanan dan kepatuhan, hubungkan dengan Menggunakan @capgo/capacitor-app-attest untuk kapabilitas native saat menggunakan @capgo/capacitor-app-attest, Enkripsi untuk detail implementasi pada Encryption, Kepatuhan untuk detail implementasi pada Compliance, Capgo Pemindai Keamanan untuk alur kerja produk di Capgo Security Scanner, dan Keamanan Capgo untuk alur kerja produk di Capgo Security.