Lompat ke konten

Setup iOS & Verifikasi Backend

GitHub

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

  • iOS 14+
  • Dianjurkan untuk menggunakan perangkat fisik untuk aliran validasi nyata
  • Target Xcode dengan kemampuan App Attest diaktifkan
  1. Buka target aplikasi iOS Anda di Xcode.
  2. Pergi ke Tanda Tangan & Kemampuan.
  3. Klik + Kemampuan dan tambahkan App Attest.

tidak ada izin iOS khusus yang diperlukan di Info.plist Alur Pelanggan

Bab berjudul 'Alur Pelanggan'

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

dan attestation.token ke backend Anda. Jangan validasi di aplikasi. assertion.token Alur Backend (iOS)

Bab berjudul 'Alur Backend (iOS)'

__CAPGO_KEEP_0__
  1. Backend membuat satu kali challenge.
  2. Penggunaan aplikasi memanggil createAttestation({ keyId, challenge }).
  3. Backend memverifikasi Attestasi App Attest:
    • rantai sertifikat valid dan terakar ke Apple App Attest
    • identitas aplikasi sesuai dengan aplikasi Anda (bundleIdtim)
    • clientDataHash sama SHA256(challenge)
  4. Status kunci perangkat toko (keyIdpublik, dan metadata verifikasi).

Pertahanan permintaan (createAssertion)

Bagian berjudul “Minta Perlindungan (buat Assertion)”
  1. Backend membuat satu kali payload (atau hash permintaan kanonik input).
  2. Aplikasi memanggil createAssertion({ keyId, payload }).
  3. Backend memeriksa tanda tangan assertion dengan materi kunci yang disimpan sebelumnya.
  4. Menggunakan perlindungan ulang dan pengecekan TTL 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

Pendaftaran:

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

Klaim:

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

Teruskan dari Pengaturan iOS & Verifikasi Backend

Judul Bagian “Teruskan dari Pengaturan iOS & Verifikasi Backend”

Jika Anda menggunakan Pengaturan iOS & Verifikasi Backend untuk merencanakan keamanan dan kewenangan, hubungkannya dengan Menggunakan @capgo/capacitor-app-attest untuk kemampuan asli dalam Menggunakan @capgo/capacitor-app-attest, Enkripsi untuk detail implementasi dalam Enkripsi, Ketepatan untuk detail implementasi di Ketepatan Capgo Scanner Keamanan untuk alur kerja produk di Capgo Scanner Keamanan, dan Capgo Keamanan untuk alur kerja produk di Capgo Keamanan