Pindah ke konten

Pengaturan iOS & Verifikasi Backend

GitHub

iOS menggunakan sistem native

Bab berjudul “iOS native system used”

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

  • iOS 14+
  • Perangkat fisik disarankan 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 perlu izin iOS khusus di Info.plist untuk aplikasi Attest 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',
});

dan attestation.token and assertion.token Sertakan ke dalam backend Anda. Jangan melakukan validasi di aplikasi.

Bab berjudul “Alur Backend (iOS)”

Section titled “Backend workflow (iOS)”
  1. Backend membuat satu kali challenge.
  2. App calls createAttestation({ keyId, challenge }).
  3. Backend memverifikasi Attestasi App Attest:
    • rantai sertifikat valid dan diakar ke Apple App Attest
    • identitas aplikasi sesuai dengan aplikasi Anda (“bundleIdtim”)
    • clientDataHash sama SHA256(challenge)
  4. Keadaan kunci perangkat toko (“keyIdpublik, dan metadata verifikasi).
  1. Backend membuat permintaan satu kali payload (atau hash permintaan kanonik input).
  2. App calls 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"
}

Klaim:

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

Meneruskan dari Pengaturan iOS & Verifikasi Backend

Judul: Meneruskan 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 di Compliance, Capgo Scanner Keamanan untuk alur produk di Capgo Scanner Keamanan, dan Capgo Keamanan untuk alur produk di Capgo Keamanan.