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

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

GitHub

Androidネイティブシステム使用

Androidネイティブシステム使用のセクション

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

  • prepareIntegrityTokenprepare()
  • requestStandardIntegrityTokencreateAttestation()createAssertion()
  • Google Playエコシステムで配布されるAndroidアプリ
  • デバイス上のGoogle Playサービスが利用可能
  • Play Integrity APIがアプリに有効
  • Google Cloudプロジェクト番号が設定済み

Google設定

「Google設定」
  1. 有効 Play Integrity API Google Cloudプロジェクト内で
  2. Open Play Console and configure Play Integrity access for your app.
  3. Provide cloudProjectNumber をプラグインに提供します。

Capacitor config

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

You can also pass cloudProjectNumber per call in method options.

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)
  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)

セクション:Request protection (createAssertion)
  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 セットアップ & バックエンド検証から続けて」セクション

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