Android 设置和后端验证
复制一个设置提示,包含安装步骤和该插件的完整Markdown指南。
安卓原生系统使用
安卓原生系统使用安卓上,这个插件使用 Google Play完整性标准 API:
prepareIntegrityToken在prepare()requestStandardIntegrityTokenforcreateAttestation()和createAssertion()
- 设备上有Google Play服务
- 为您的应用程序启用Play Integrity __CAPGO_KEEP_0__
- Play Integrity API 已启用
- Google设置
- Google设置 Play Integrity API 在您的 Google Cloud 项目中。
- 打开 Play Console 并为您的应用程序配置 Play Integrity 访问。
- 提供
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)
Android后端创建一次性令牌- 应用程序调用
challenge. - 后端调用Google
createAttestation({ keyId, challenge }). - __CAPGO_KEEP_0__。
decodeIntegrityTokenAPI. - 等于您的Android应用程序ID
requestDetails.requestHash === base64url(SHA256(challenge))appIntegrity.packageNameSection titled “Registration (createAttestation)”appIntegrity.certificateSha256Digest包含您的发布签名证书摘要- 完整性判决与您的安全策略匹配
请求保护(createAssertion)
标题:请求保护(createAssertion)- 后端创建一次性
payload. - 应用程序调用
createAssertion({ keyId, payload }). - 后端解码令牌并检查
requestHash === base64url(SHA256(payload)). - 强制实施重放防护(单次使用 + TTL)和完整性判决策略。
sequenceDiagram 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最小后端载荷契约
Minimal backend payload contract注册:
{ "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 & 后端验证
如果您正在使用Android Setup & 后端验证 来规划安全性和合规性,连接它与 使用 @__CAPGO_KEEP_0__/__CAPGO_KEEP_1__-app-attest 用于本地能力的 Using @capgo/capacitor-app-attest, 为使用@capgo/capacitor-app-attest的原生能力 加密 为加密的实现细节 合规 为合规的实现细节 Capgo 安全扫描器 为Capgo 安全扫描器的产品工作流程 Capgo 安全 为Capgo 安全的产品工作流程