Lompat ke konten

Setup iOS & Verifikasi Backend

GitHub

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

  • iOS 14+
  • Perangkat fisik direkomendasikan untuk alur validasi nyata
  • Target Xcode dengan kemampuan App Attest diaktifkan
  1. Buka target aplikasi iOS Anda di Xcode.
  2. Lihat Tanda Tangan & Kemampuan.
  3. Klik + Kemampuan dan tambahkan App Attest.

Tidak ada izin iOS khusus yang diperlukan 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 mereka di aplikasi.

  1. Backend membuat satu kali challenge.
  2. App memanggil createAttestation({ keyId, challenge }).
  3. Backend memverifikasi Attestasi App Attest:
    • rantai sertifikat valid dan diakar ke Apple App Attest
    • identitas aplikasi cocok dengan aplikasi (bundleId, tim)
    • clientDataHash sama SHA256(challenge)
  4. Simpan status kunci perangkat (keyId, kunci publik, dan metadata verifikator).
  1. Backend membuat satu kali payload (atau hash permintaan kanonik input).
  2. Panggilan Aplikasi createAssertion({ keyId, payload }).
  3. Backend memverifikasi tanda tangan asertasi 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"
}

Asertasi:

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

Lanjutkan dari Pengaturan iOS & Verifikasi Backend

Judul Bagian “Lanjutkan 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, Kewenangan untuk detail implementasi dalam Kewenangan, Scanner Keamanan Capgo untuk alur kerja produk di Scanner Keamanan Capgo Scanner Keamanan Capgo untuk alur kerja produk di Scanner Keamanan Capgo