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

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

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

  • prepareIntegrityToken の間 prepare()
  • requestStandardIntegrityToken のために createAttestation() そして createAssertion()
  • Google Play エコシステムを通じて配布されるAndroidアプリ
  • デバイス上で利用可能なGoogle Play サービス
  • アプリにプレイ インテグリティ API を有効にします。
  • Google Cloud プロジェクト番号が設定されました。

Google の設定

「Google の設定」
  1. 有効 プレイ インテグリティ API Google Cloud プロジェクトで。
  2. Play Console にアクセスし、アプリのプレイ インテグリティ アクセスを設定します。
  3. プラグインに提供します。 cloudProjectNumber __CAPGO_KEEP_0__ の設定

「Capacitor の設定」

Section titled “Capacitor config”
capacitor.config.ts
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)

登録(createAttestation)
  1. バックエンドは一度限りの challenge.
  2. アプリが呼び出し createAttestation({ keyId, challenge }).
  3. バックエンドはGoogleの decodeIntegrityToken API.
  4. バックエンドは最低でも以下を検証
    • requestDetails.requestHash === base64url(SHA256(challenge))
    • appIntegrity.packageName AndroidアプリケーションIDと等しい
    • appIntegrity.certificateSha256Digest リリース署名証明書のダイジェストを含む
    • セキュリティポリシーに合致する整合性判定
  1. バックエンドは一度限りの payload.
  2. アプリが呼び出し createAssertion({ keyId, payload }).
  3. バックエンドはトークンをデコードし、確認します。 requestHash === base64url(SHA256(payload)).
  4. 再生防止 (シングル ユース + 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

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

「バックエンド ペイロード契約 (最小)」のセクション

登録:

{
"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 の @capgo/capacitor-app-attest を使用 Capgo の @capgo/capacitor-app-attest のネイティブ機能 暗号化 暗号化の実装詳細 コンプライアンス コンプライアンスの実装詳細 Capgo Security Scanner Capgo セキュリティ スキャナーの製品ワークフロー Capgo セキュリティ Capgo セキュリティの製品ワークフロー用