iOS 配置与后端验证
复制包含安装步骤和该插件完整 Markdown 指南的配置 prompt。
所用 iOS 原生系统
标题为“所用 iOS 原生系统”的章节在 iOS 上,该插件使用 Apple App Attest 与 DeviceCheck framework。
- iOS 14+
- 实际验证流程建议使用真机
- 已启用 App Attest 能力的 Xcode target
Xcode 配置
“Xcode 设置”章节- 在 Xcode 中打开您的 iOS 应用 Target。
- 前往 签名与功能.
- 点击 + 功能 并添加 App Attest.
无需在 iOS 中配置自定义权限 Info.plist 即可使用 App Attest。
客户端流程
“客户端流程”章节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',});发送 attestation.token 以及 assertion.token 到你的后端。不要在 App 内验证它们。
后端工作流(iOS)
“后端工作流 (iOS)”章节注册(createAttestation)
“注册(createAttestation)”章节- 后端创建一次性
challenge. - App 调用
createAttestation({ keyId, challenge }). - 后端验证 App Attest 证明:
- 证书链有效,并锚定到 Apple App Attest
- 应用身份与你的应用匹配(
bundleId,团队) clientDataHash匹配SHA256(challenge)
- 存储设备密钥状态(
keyId、公钥和验证器元数据)。
请求保护(createAssertion)
标题为“Request protection (createAssertion)”的章节- 后端创建一次性
payload(或规范请求哈希输入)。 - App 调用
createAssertion({ keyId, payload }). - 后端使用之前存储的密钥材料验证 assertion 签名。
- 强制实施重放保护和 nonce TTL 检查。
iOS Schema
标题为“iOS schema”的章节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最小后端 payload 契约
标题为“最小后端 payload 契约”的章节注册:
{ "platform": "ios", "format": "apple-app-attest", "keyId": "string", "challenge": "string", "token": "string"}断言:
{ "platform": "ios", "format": "apple-app-attest", "keyId": "string", "payload": "string", "token": "string"}继续阅读 iOS Setup & Backend Verification
标题为“继续阅读 iOS Setup & Backend Verification”的章节如果你正在使用 iOS 配置与后端验证 来规划安全与合规,请结合 使用 @capgo/capacitor-app-attest 用于“使用 @capgo/capacitor-app-attest”中的原生能力, 加密 了解 Encryption 的实现细节, 合规性 了解合规部分的实现细节, Capgo 安全扫描器 用于 Capgo Security Scanner 中的产品工作流,以及 Capgo 安全 用于 Capgo Security 中的产品工作流。