본문 바로가기

Android 설정 및 백엔드 검증

GitHub

사용되는 Android 네이티브 시스템

“Android 네이티브 시스템 사용” 섹션

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.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 토큰이며 서버 측에서 디코딩해야 합니다.

등록 (createAttestation)

“등록 (createAttestation)” 섹션
  1. 백엔드에서 일회용 값 생성 challenge.
  2. 앱에서 호출 createAttestation({ keyId, challenge }).
  3. 백엔드에서 Google 호출 decodeIntegrityToken API.
  4. 백엔드에서 최소한 다음을 검증:
    • requestDetails.requestHash === base64url(SHA256(challenge))
    • appIntegrity.packageName Android application id와 일치하는지 여부
    • appIntegrity.certificateSha256Digest release signing cert digest 포함 여부
    • integrity verdicts가 보안 정책과 일치하는지 여부

요청 보호 (createAssertion)

“요청 보호 (createAssertion)” 섹션
  1. 백엔드에서 일회용 값 생성 payload.
  2. 앱에서 호출 createAssertion({ keyId, payload }).
  3. 백엔드에서 토큰을 디코딩하고 검증합니다. requestHash === base64url(SHA256(payload)).
  4. 재전송 방지(1회용 + 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 설정 및 백엔드 검증에서 계속하기”

사용 중이라면 Android 설정 및 백엔드 검증 보안 및 컴플라이언스 계획을 세우려면, 다음 항목과 연결하세요: @capgo/capacitor-app-attest 사용하기 @capgo/capacitor-app-attest 사용 시 네이티브 기능을 위해, 암호화 암호화 구현 상세 정보: 컴플라이언스 컴플라이언스 구현 상세 정보: Capgo 보안 스캐너 Capgo Security Scanner에서 제품 워크플로우는, 그리고 Capgo 보안 Capgo Security의 제품 워크플로를 위해.