Android Setup & Backend Verification
复制一个包含安装步骤和本插件的完整 Markdown 指南的配置提示。
Android 原生系统使用
标题:Android 原生系统使用在 Android 上,这个插件使用 Google Play 敏感度标准 API:
prepareIntegrityToken期间prepare()requestStandardIntegrityToken用于createAttestation()和createAssertion()
需求
标题:需求- 通过 Google Play 生态系统分发的 Android 应用
- 设备上可用的 Google Play 服务
- 为您的应用程序启用 Play Integrity API
- 已配置 Google 云端平台项目号
Google 设置
Google 设置- 启用 在您的 Google 云端平台项目中启用 Play Integrity API 打开 Play 控制台并为您的应用程序配置 Play Integrity 访问权限。
- 向插件提供
- __CAPGO_KEEP_0__ 配置
cloudProjectNumber配置
Capacitor 配置
Capacitor 配置plugins: { AppAttest: { cloudProjectNumber: '123456789012', },}您也可以通过 cloudProjectNumber 在方法选项中每次调用一次。
客户端流程
标题为“客户端流程”import { AppAttest } from '@capgo/capacitor-app-attest';
const { keyId } = await AppAttest.prepare({ cloudProjectNumber: '123456789012',});
const attestation = await AppAttest.createAttestation({ keyId, challenge: 'backend-registration-challenge',});
const assertion = await AppAttest.createAssertion({ keyId, payload: 'backend-request-payload',});token 是一个Play Integrity令牌,必须在服务器端解码。
Android后端工作流
标题为“Android后端工作流”注册(createAttestation)
标题为“注册(createAttestation)”- 后端创建一次性
challenge. - App调用
createAttestation({ keyId, challenge }). - 后端调用Google
decodeIntegrityTokenAPI. - 后端验证至少:
requestDetails.requestHash === base64url(SHA256(challenge))appIntegrity.packageName等于您的Android应用程序IDappIntegrity.certificateSha256Digest包含您的发布签名证书摘要- 完整性判决与您的安全策略匹配
请求保护(createAssertion)
标题为“请求保护(createAssertion)”- 后端创建一次性
payload. - App调用
createAssertion({ keyId, payload }). - 后端解码令牌并检查
requestHash === base64url(SHA256(payload)). - 强制防止重放 (单次使用 + TTL) 和完整性判决策略。
Android schema
Android schemasequenceDiagram participant App as Android App participant Plugin as AppAttest plugin participant PlaySDK as Play Integrity SDK participant BE as Backend participant Google as decodeIntegrityToken API
App->>Plugin: prepare(cloudProjectNumber) Plugin->>PlaySDK: prepareIntegrityToken() PlaySDK-->>Plugin: provider handle (keyId)
BE->>App: one-time challenge App->>Plugin: createAttestation(keyId, challenge) Plugin->>PlaySDK: requestStandardIntegrityToken(requestHash) PlaySDK-->>Plugin: integrity token Plugin-->>App: token + platform + format + keyId App->>BE: token + challenge + keyId BE->>Google: decodeIntegrityToken(token) Google-->>BE: decoded payload BE->>BE: verify requestHash + app identity + verdicts
BE->>App: one-time payload App->>Plugin: createAssertion(keyId, payload) Plugin->>PlaySDK: requestStandardIntegrityToken(requestHash) PlaySDK-->>Plugin: integrity token App->>BE: token + payload + keyId BE->>Google: decodeIntegrityToken(token) Google-->>BE: decoded payload BE->>BE: verify requestHash + replay policy最小后端载荷合同
注册:复制到剪贴板
{ "platform": "android", "format": "google-play-integrity-standard", "keyId": "string", "challenge": "string", "token": "string"}复制到剪贴板
{ "platform": "android", "format": "google-play-integrity-standard", "keyId": "string", "payload": "string", "token": "string"}继续从 Android Setup & 后端验证
Section titled “从 Android Setup & Backend Verification 中继续”如果您正在使用 Android Setup & Backend Verification 来规划安全性和合规性,连接它与 使用 @capgo/capacitor-app-attest 为 Using @capgo/capacitor-app-attest 中的原生功能 加密 为加密的实现细节 合规 为合规的实现细节 Capgo 安全扫描器 为 Capgo 安全扫描器 中的产品工作流程 Capgo 安全 为产品工作流程在 Capgo 安全中