メインコンテンツにスキップ

Android セットアップ & バックエンド検証

GitHub

Android上で、このプラグインは Google Play Integrity Standard API:

  • prepareIntegrityToken 期間中 prepare()
  • requestStandardIntegrityToken のために createAttestation() そして createAssertion()
  • Google Play エコシステムを通じて配布されるAndroidアプリ
  • デバイス上で利用可能なGoogle Play サービス
  • あなたのアプリ用にPlay Integrity APIが有効になっています
  • Google Cloud プロジェクト番号が設定されている
  1. 有効にする Play Integrity API Google Cloudプロジェクト内で使用
  2. Play Consoleを開き、Play Integrityアクセスをアプリに設定
  3. 設定 cloudProjectNumber プラグインに提供

Capacitor config

Capacitor config
capacitor.config.ts
plugins: {
AppAttest: {
cloudProjectNumber: '123456789012',
},
}

__CAPGO_KEEP_0__をオプションのメソッドに渡すこともできます cloudProjectNumber __CAPGO_KEEP_0__の呼び出しごとに

クライアントフロー

クライアントフロー
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 __CAPGO_KEEP_0__.はPlay Integrityトークンであり、サーバーサイドでデコードする必要があります。

バックエンドワークフロー (Android)

バックエンドワークフロー (Android) のセクション
  1. バックエンドは1回限りの challenge.
  2. アプリが呼び出し createAttestation({ keyId, challenge }).
  3. バックエンドがGoogleを呼び出し decodeIntegrityToken API.
  4. バックエンドは少なくとも以下を検証する必要があります:
    • requestDetails.requestHash === base64url(SHA256(challenge))
    • appIntegrity.packageName Android アプリ ID と等しくなります
    • appIntegrity.certificateSha256Digest リリース署名証明書のダイジェストを含みます
    • 安全ポリシーと一致する整合性判定結果が得られます

Request protection (createAssertion)

リクエスト保護(createAssertion)
  1. バックエンドが一時的な payload.
  2. アプリが createAssertion({ keyId, payload }).
  3. バックエンドがトークンをデコードし、検証します requestHash === base64url(SHA256(payload)).
  4. 再生防止(シングルユース + TTL)と整合性判定ポリシーを強制します。

Android スキーマ

Android スキーマ
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

最小のバックエンドペイロード契約

最小のバックエンドペイロード契約

登録:

{
"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セットアップとバックエンド検証から続けて

Androidセットアップとバックエンド検証から続けて

Capgoを使用している場合 Androidセットアップとバックエンド検証 セキュリティとコンプライアンスを計画するには、Capgoを 使用中の@capgo/capacitor-app-attest native capabilityの使用に@capgo/capacitor-app-attestを使用する 暗号化 暗号化の実装詳細 法的合致 法的合致の実装詳細 Capgo セキュリティ スキャナー Capgo セキュリティ スキャナーの製品ワークフロー Capgo セキュリティ Capgo セキュリティの製品ワークフロー