iOS 设置和后端验证
复制一个包含安装步骤和此插件的全 Markdown 指南的配置提示。
使用 iOS 本地系统
标题:使用 iOS 本地系统在 iOS 上,这个插件使用 Apple App Attest 来自 DeviceCheck 框架
需求
标题:需求- iOS 14+
- 建议使用物理设备进行真实验证流程
- 已启用 App Attest 能力的 Xcode 目标
Xcode 设置
标题:Xcode 设置- 打开您的 iOS 应用程序目标在 Xcode 中。
- 前往 签名 & 能力.
- 点击 + 能力 和添加 App Attest.
在企业产品/价格页面中,App Attest Info.plist 不需要自定义的iOS权限
Client流程
Client流程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)
后端工作流程(iOS)注册(__CAPGO_KEEP_0__)createAttestation)
标题:注册(createAttestation)- 后端创建一次性
challenge. - App调用
createAttestation({ keyId, challenge }). - 后端验证App Attest attestation:
- 证书链有效且锚定到Apple App Attest
- app身份与您的app(
bundleId,团队) clientDataHash匹配SHA256(challenge)
- 设备商店设备密钥状态(
keyId,公钥,和验证器元数据)
请求保护(createAssertion)
iOS保护请求(createAssertion)- 后端创建一次性
payload(或canonical请求hash输入). - 应用程序调用
createAssertion({ keyId, payload }). - 后端验证assertion签名与之前存储的密钥材料.
- 强制重放保护和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最小后端载荷合同
注册:iOS保护请求(createAssertion)
{ "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设置和后端验证
标题:继续从iOS设置和后端验证如果您正在使用 iOS设置和后端验证 来规划安全性和合规性,连接它与 使用@capgo/capacitor-app-attest 用于本地能力的@capgo/capacitor-app-attest 用于加密 用于加密细节 合规性 为合规性中的实现细节 Capgo 安全扫描器 为Capgo 安全扫描器中的产品工作流程 Capgo 安全 为Capgo 安全中的产品工作流程