从iOS设置和后端验证继续
复制一个包含安装步骤和完整Markdown指南的设置提示。
iOS 原生系统使用
标题:iOS 原生系统使用在 iOS 上,这个插件使用 Apple App Attest 来自 DeviceCheck 框架。
要求
标题:要求- iOS 14+
- 建议使用物理设备进行真实验证流程
- Xcode目标中启用App Attest能力
Xcode设置
标题:Xcode设置- 在Xcode中打开您的iOS应用程序目标。
- 转到 签名和功能.
- 点击 +功能 并添加 App Attest.
在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 将其发送到您的后端。不要在应用程序中验证它们。
后端工作流 (iOS)
注册(后端创建一次性createAttestation)
应用程序调用- Registration (createAttestation)
challenge. - Backend creates one-time
createAttestation({ keyId, challenge }). - 后端验证 App Attest attestation:
- 证书链有效且与 Apple App Attest 相关联
- 应用身份与您的应用 (
bundleId,团队) 匹配 clientDataHash匹配SHA256(challenge)
- 存储设备密钥状态 (
keyId,公钥和验证器元数据)
请求保护 (createAssertion)
创建断言)- 后端创建一次性
payload(或规范请求哈希输入) - 应用程序调用
createAssertion({ keyId, payload }). - 后端验证断言签名与之前存储的密钥材料。
- 强制执行重放保护和 nonce TTL 检查。
iOS schema
iOS schemasequenceDiagram 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最小后端载荷契约
注册:复制到剪贴板
{ "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 设置和后端验证
Section titled “从 iOS Setup & Backend Verification 中继续”如果您正在使用 iOS Setup & Backend Verification 来规划安全性和合规性,连接它与 使用 @capgo/capacitor-app-attest 为在使用 @capgo/capacitor-app-attest 中的原生能力 加密 为加密的实现细节 合规 为合规的实现细节 Capgo 安全扫描器 为 Capgo 安全扫描器 的产品工作流程 Capgo 安全 为产品工作流程在 Capgo 安全中使用。