본문 바로가기

Capacitor 앱의 생체 인증

사용자 경험을 개선하고 민감한 데이터를 보호하기 위해 Capacitor 앱에 안전한 생체 인증을 구현하는 방법을 알아보세요.

Capacitor 앱의 생체 인증 Capgo 블로그 일러스트

생체 인증 비밀번호 대신 지문, 얼굴 또는 기타 생체 특성을 사용해 사용자가 앱에 안전하게 접속하도록 합니다. 이 기능을 다루는 개발자라면 Capacitor이 기능을 구현하는 것은 간단하며 iOS와 Android 모두에서 작동합니다. 간단히 요약하면 다음과 같습니다:

  • 왜 생체 인증을 사용해야 할까요?

    • 비밀번호보다 더 안전합니다.
    • 로그인 속도를 높여 사용자 경험을 개선합니다.
    • 민감한 데이터에 대한 보안 표준을 충족합니다.
  • 지원 방식:

    • 지문 인식: 빠르고 보편적입니다.
    • 얼굴 인식: 핸즈프리 옵션입니다.
    • 홍채 인식: 높은 보안이 필요한 용도 (지원 기기 제한).
    • 음성 인식: 접근성 중심 (지원 제한).
  • 필요한 주요 도구:

    • Capacitor 7.0 이상.
  • 설정 주요 사항:

    • AndroidManifest 및 Info.plist에 권한을 추가합니다.
    • 보안 저장을 위해 Keychain(iOS) 또는 Keystore(Android)를 사용합니다.
    • 호환성 및 폴백 옵션을 철저히 테스트하세요.

플러그인 빠른 비교

플러그인 이름 Capacitor 버전 기능 추천 대상
@aparajita/capacitor-biometric-auth Capacitor 8 네이티브 생체 인증, 기기 자격 증명 Capacitor 8을 사용하는 새 프로젝트
@capgo/capacitor-native-biometric Capacitor 8 (플러그인 v8, Capacitor 7용은 v7) 생체 인증 확인과 Keychain/Keystore 기반 안전한 자격 증명 저장 자격 증명 관리 및 Identity Vault 대체
기타 커뮤니티 플러그인 모든 버전 생체 인증 및 기기 자격 증명 지원 유연한 인증 옵션

Capacitor 앱의 생체 인증 문서에서 확인하세요 민감한 데이터를 보호하는 안전하고 사용자 친화적인 방법입니다. 전체 아티클에서는 설정 단계, code 예시, 테스트 전략, 보안 표준을 자세히 다룹니다.

Ionic Biometric (FaceID / FingerPrint) 인증

설정 요구사항

앱에 생체 인증을 활성화하려면 Capacitor 앱일부 도구, 의존성, 플랫폼별 설정을 구성해야 합니다. 아래에 Android와 iOS 플랫폼의 단계별 설정 요구 사항을 확인하세요.

필수 도구 및 의존성

구현에 들어가기 전에 다음 도구와 의존성이 준비되어 있는지 확인하세요:

구성 요소 최소 버전 목적
Capacitor 7.0 이상 핵심 프레임워크
Node.js 최신 LTS 패키지 관리
iOS 프로파일링 최신 버전 iOS 개발
디버깅하기 최신 버전 Android 개발
실제 기기 iOS 13+ / Android API 23+ 생체 인증 기능 테스트

다음을 선택하세요: 생체 인증 플러그인 Capacitor 버전 기준:

  • @aparajita/capacitor-biometric-auth Capacitor 8 버전용
  • @capgo/capacitor-native-biometric Capacitor 8(플러그인 v8) 또는 Capacitor 7(플러그인 v7)에서 생체 인증으로 보호되는 자격 증명 저장소도 필요할 때

Android 설정 단계

Android에서 생체 인증을 구성하려면 프로젝트 파일을 몇 군데 수정해야 합니다:

  1. Manifest 구성

    다음 권한을 추가하세요: AndroidManifest.xml 파일에 추가하세요:

    <uses-permission android:name="android.permission.USE_BIOMETRIC" />
    <!-- For Android 9 (API 28) or lower -->
    <uses-permission android:name="android.permission.USE_FINGERPRINT" />
  2. Gradle 설정

    앱의 build.gradle 파일에 필요한 생체 인증 의존성을 추가하세요:

    dependencies {
        implementation "androidx.biometric:biometric:1.1.0"
    }

iOS 설정 단계

iOS의 경우, 생체 인증을 구성하려면 다음 단계를 따르세요:

  1. Info.plist 구성

    필요한 사용 설명을 Info.plist 파일에 추가하세요:

    <key>NSFaceIDUsageDescription</key>
    <string>Authentication required for secure access</string>
  2. Keychain 구성

    Xcode에서 Keychain 기능을 활성화하세요:

    • 프로젝트 설정을 엽니다.
    • 다음으로 이동하세요: Signing & Capabilities 탭에 머무르세요.
    • 다음을 추가하세요 Keychain 공유 capability입니다.
    • 필요 시 접근 그룹을 구성하세요.
  3. 인증 정책

    다음 사항을 처리하도록 로컬 인증 정책을 설정하세요:

    • 인증 실패 시도
    • 기기 패스코드로 폴백
    • 생체 인식 사용 가능 여부 확인

    더 나은 보안을 위해 iOS Keychain에 민감한 데이터를 저장하세요. 이를 통해 Touch ID와 Face ID 모두와 호환성을 유지하면서 사용자 자격 증명을 보호할 수 있습니다.

Code 구현

설정 구성이 완료되면 다음 단계는 안전한 code 구현입니다. 이는 적합한 플러그인 선택과 신뢰할 수 있는 인증 플로우 설계가 포함됩니다.

플러그인 선택 가이드

Capacitor 앱에 사용할 생체 인증 플러그인을 고를 때는 프로젝트의 구체적인 요구사항에 맞춰야 합니다. 다음은 인기 있는 옵션들입니다:

플러그인 이름 Capacitor 버전 주요 기능 추천 대상
@aparajita/capacitor-biometric-auth Capacitor 8 네이티브 생체 인증, 기기 자격 증명, 포괄적인 API Capacitor 8 기반 신규 프로젝트
@capgo/capacitor-native-biometric Capacitor 8 (플러그인 v8, Capacitor 7용은 v7) 생체 인증 및 안전한 자격 증명 저장, Keychain/Keystore 연동 생체 인증 기반 자격 증명이 필요한 프로젝트
기타 커뮤니티 플러그인 모든 버전 생체 인증 및 기기 자격 증명 인증, 깔끔한 API 유연한 인증 옵션이 필요한 프로젝트

인증 Code 예시

다음은 @capgo/capacitor-native-biometric 생체 인증용 플러그인 사용 방법입니다:

import { NativeBiometric } from '@capgo/capacitor-native-biometric';

async function setupBiometricAuth() {
  try {
    const { isAvailable } = await NativeBiometric.isAvailable();

    if (!isAvailable) {
      return {
        success: false,
        message: "Biometric authentication not available"
      };
    }

    await NativeBiometric.verifyIdentity({
      reason: "Access your secure data",
      title: "Verify Identity",
      subtitle: "Use biometrics to authenticate"
    });

    return { success: true };
  } catch (error) {
    return {
      success: false,
      error: error.message
    };
  }
}

보안 자격 증명을 관리하려면, capacitor-native-biometric 플러그인은 간단한 방법을 제공합니다:

import { NativeBiometric } from '@capgo/capacitor-native-biometric';

async function secureCredentialStorage(credentials) {
  try {
    await NativeBiometric.setCredentials({
      username: credentials.username,
      password: credentials.password,
      server: "api.yourserver.com"
    });

    // Verify storage by retrieving the credentials
    const stored = await NativeBiometric.getCredentials({
      server: "api.yourserver.com"
    });

    return stored.username === credentials.username;
  } catch (error) {
    console.error("Credential storage failed:", error);
    return false;
  }
}

code가 설정된 후에는 적절한 테스트를 통해 기능이 정상적으로 작동하는지 확인하는 것이 중요합니다.

테스트 방법

생체 인증이 안정적이고 안전한지 확인하려면 다음 테스트 전략을 고려해 보세요:

  • 기기 호환성 테스트

    다양한 기기와 환경에서 인증이 정상 작동하는지 확인하세요:

    async function runCompatibilityTests() {
      const tests = {
        biometricAvailable: (await NativeBiometric.isAvailable()).isAvailable,
        credentialStorage: await testCredentialStorage(),
        authenticationFlow: await testAuthFlow(),
        fallbackMechanism: await testFallbackAuth()
      };
    
      return tests;
    }
  • 에러 처리 및 일반 시나리오

    에러를 시뮬레이션하고 폴백 메커니즘을 테스트하세요:

    async function validateErrorHandling() {
      try {
        await Promise.race([
          NativeBiometric.verifyIdentity(),
          new Promise((_, reject) =>
            setTimeout(() => reject(new Error("Timeout")), 30000)
          )
        ]);
      } catch (error) {
        return implementFallbackAuth();
      }
    }
  • 보안 검증

    구현이 보안 표준을 충족하는지 확인하세요:

    async function validateSecurityMeasures() {
      const validations = {
        keychain: await validateKeychainAccess(),
        biometricStrength: await checkBiometricStrength(),
        encryptionStatus: await verifyEncryption()
      };
    
      return validations.keychain &&
             validations.biometricStrength &&
             validations.encryptionStatus;
    }

또한 다음과 같은 시나리오도 테스트하세요:

  • 인증 실패가 여러 번 발생하는 경우
  • 기기 재부팅 후 동작
  • 앱의 포그라운드와 백그라운드 상태 전환
  • 네트워크 연결 상태 변경
  • 시스템 생체 인증 설정 변경

철저한 테스트를 거치면 생체 인증 시스템이 견고하고 실제 환경에서 사용할 준비가 되었음을 보장할 수 있습니다.

보안 표준

생체 인증에서 강력한 보안을 보장하려면 데이터 보호를 최우선으로 하고, 규정을 준수하며, 다층 보안 기법을 적용해야 합니다.

데이터 보안 방식

iOS에서는 생체 데이터를 암호화해 다음을 사용해 저장합니다: Keychain, 반면 Android는 다음을 사용합니다: Keystore. 만약 ...을 사용 중이라면 capacitor-native-biometric plugin을 사용 중이라면, 다음과 같이 사용자 인증 정보를 안전하게 저장할 수 있습니다:

import { NativeBiometric } from '@capgo/capacitor-native-biometric';

async function securelyStoreCredentials(username, password) {
  const server = "api.yourapp.com";

  // Use the highest available encryption
  await NativeBiometric.setCredentials({
    username,
    password,
    server,
    authenticationType: "biometricAndDevice",
    accessControl: "biometryAny"
  });
}

데이터 전송 시에는 항상 종단간 암호화(end-to-end encryption) 를 구현해 민감한 정보를 보호하세요.

스토어 가이드라인

앱 스토어는 ...에 엄격한 규칙을 적용합니다 생체 인증 보안. 주요 플랫폼 요구사항을 정리했습니다:

플랫폼 주요 요구 사항 구현 참고 사항
iOS LocalAuthentication 프레임워크를 사용하고, 폴백 옵션을 제공하며, 명확한 사용자 동의를 확보하세요 Face ID와 Touch ID 모두를 지원해야 합니다
Android BiometricPrompt API를 활용하고, 명시적인 사용자 권한을 얻으며, 보안 수준을 선언하세요 보안 수준별로 구분하여 지문 및 얼굴 인식 지원

다중 인증 설정

보안을 강화하려면 보통 생체 인증과 추가 인증 계층을 함께 사용해야 합니다. 예를 들어, 초기 생체 인증과단계 이후 사용자 신원을 확인하는 2차 단계를 추가할 수 있습니다:

async function setupMultiFactorAuth() {
  // First factor: Biometric verification
  // verifyIdentity rejects if the user cancels or fails the check
  try {
    await NativeBiometric.verifyIdentity({
      reason: "Verify your identity",
      title: "Authentication Required"
    });
  } catch {
    return false;
  }

  // Second factor: Time-based OTP or similar mechanism
  const totpResult = await verifyTOTP();
  return totpResult.success;
}

다중 인증 방식에는 일반적으로 다음이 포함됩니다:

  • 1차 생체 인증
  • 2차 검증 (예: SMS code 또는 인증 앱)
  • 거래별 확인 보안 강화를 위해

Capgo 같은 도구로 Live Update를 사용 중이라면, 해당 도구의 종단간 암호화(end-to-end encryption) 기능을 활용해 보안 표준을 준수하세요. 이렇게 하면 업데이트 중에도 생체 인증 방식이 안전하게 유지되고 플랫폼 요구 사항을 충족합니다. [1].

유지보수 가이드

속도, 배터리 효율, 적시 업데이트의 균형을 맞춰 생체 인증 시스템을 원활하게 운영하세요.

속도 및 배터리 팁

다음은 효율적인 생체 인증 구현을 위한 code 코드 스니펫입니다:

// Efficient authentication implementation
async function optimizedBiometricCheck() {
  const authResult = await NativeBiometric.isAvailable();

  if (!authResult.isAvailable) {
    return handleFallback();
  }

  // Cache authentication state to avoid unnecessary re-checks
  if (this.cachedAuthState && !this.isAuthExpired()) {
    return this.cachedAuthState;
  }

  return NativeBiometric.verifyIdentity({
    reason: "Verify your identity",
    title: "Authentication Required",
    maxAttempts: 3
  });
}

생체 인증 시스템의 성능을 극대화하려면:

  • 일괄 인증(Batch Authentication): 여러 prompt를 띄우는 대신, 인증이 필요한 작업을 하나의 세션으로 묶어 중단을 줄이세요.
  • 스마트 캐싱(Smart Caching): 인증 상태를 안전하게 저장하고 만료 시간을 설정하여 불필요한 재인증을 방지합니다.
  • 백그라운드 최적화: 인증 중에는 속도를 높이고 배터리를 절약하기 위해 비필수 작업을 일시 중지합니다.
  • 이벤트 기반 방식: 지속적인 폴링 대신 이벤트 리스너를 사용하여 인증 상태를 더 효율적으로 모니터링합니다.

Live Update로 업데이트 Capgo

Capgo Live Update 대시보드 인터페이스

Capgo는 앱 업데이트를 간소화합니다.

Capgo가 업데이트 관리에 탁월한 도구인 이유는 다음과 같습니다:

  • 즉시 배포: 중요한 보안 패치와 새로운 기능을 지연 없이 즉시 배포할 수 있습니다.
  • 단계적 배포: 전체 사용자에게 배포하기 전, 특정 사용자 그룹을 대상으로 업데이트를 테스트하세요.
  • 버전 관리: 더 나은 관리를 위해 여러 인증 버전을 추적하세요.
  • 긴급 롤백: 문제가 발생하면 빠르게 이전 버전으로 되돌리세요.

API 업데이트

보안과 기능을 위해 생체 인증 API의 최신 상태를 유지하는 것이 매우 중요합니다. 다음 가이드에 따라 업데이트를 미리 관리하세요:

업데이트 유형 모니터링 방식 구현 타임라인
보안 패치 플러그인 리포지토리 알림 24시간
기능 업데이트 플랫폼 문서 1주일
주요 변경 사항 릴리스 노트 2~4주
스토어 정책 업데이트 개발자 포털 제출 전

다음 영역에 집중하세요:

  • 플랫폼 변경 사항: iOS의 LocalAuthentication 및 Android의 BiometricPrompt API 업데이트를 추적하세요.
  • 보안 표준: 최신 생체 인증 보안 요구사항을 준수하세요.
  • 스토어 가이드라인: Apple App Store 및 Google Play 정책 준수하여 제출 문제를 방지하세요.

마치며

핵심 요약

Capacitor 앱에 생체 인증을 추가할 때는 보안, 성능, 사용자 경험을 균형 있게 고려해야 합니다. 핵심 요소를 간단히 정리하면 다음과 같습니다:

구성 요소 구현 핵심 사항 주요 고려 사항
보안 표준 플랫폼 네이티브 저장소 (Keychain/Keystore) 종단 간 암호화, 자격 증명 보호
플러그인 선택 최신 버전 호환성 다양한 생체 인증 유형 지원
업데이트 관리 정기적인 유지보수 주기 보안 패치 빠른 배포
사용자 경험 대체 인증 옵션 명확하고 사용자 친화적인 인증 프롬프트

이 구성 요소들은 성공적인 통합을 위한 로드맵입니다.

생체 인증 구현 단계

앱에 생체 인증을 통합하려면 다음 단계를 따르세요:

  • 플러그인 통합
    먼저 Capacitor 버전에 맞는 생체 인증 플러그인을 선택하세요. 구성 파일 - 예: AndroidManifest.xml 및 Info.plist - 이 올바르게 설정되어 있는지 확인하세요. 안전한 자격 증명 저장을 위해 Keychain 또는 Keystore와 같은 네이티브 솔루션을 사용하세요.

  • 보안 설정
    모든 자격 증명 전송에 대해 끝에서 끝까지 암호화를 활성화하여 사용자 데이터를 보호하세요. 필요한 경우 다요소 인증(MFA) 을(를) 포함하여 추가 보안 계층을 마련하세요. 장애 발생 시에도 기능이 유지되도록 견고한 오류 처리 및 폴백 옵션을 계획하세요.

  • 지속적인 유지보수
    보안 패치를 위한 정기적인 업데이트 파이프라인을 구축해 앱 보안을 유지하세요. 플러그인 업데이트를 꾸준히 확인하고 보안 권고 사항을 모니터링해야 합니다. Capgo 같은 도구를 쓰면 즉시 업데이트가 가능해 이 과정을 간소화할 수 있습니다. Capgo은 24시간 이내 95%라는 인상적인 사용자 업데이트율을 자랑해 툴킷에 꼭 추가할 만한 가치가 있습니다 [2].

“Capgo는 생산성을 높이고 싶은 개발자에게 필수 도구입니다. 버그 수정 시 앱 심사를 피할 수 있다는 점이 정말 최고죠.” - Bessie Cooper [2]

자주 묻는 질문

::: FAQ

Capacitor용 생체 인증 플러그인들은 어떻게 다르고, 내 앱에 가장 적합한 것을 어떻게 고를 수 있을까요?

Capacitor 앱에 쓸 생체 인증 플러그인을 고를 때는 프로젝트의 구체적인 요구 사항에 맞추는 것이 중요합니다. 다음과 같은 요소를 고려하세요 플랫폼 호환성 (iOS, Android 또는 둘 다 지원해야 하는지), 통합 과정이 얼마나 간단한지, 그리고 다음과 같은 고급 생체 인증 방식을 지원하는지 여부입니다 Face ID 또는 지문 인증.

이 가이드는 다음 환경에서 생체 인증을 구현하는 데 중점을 두고 있지만 Capacitor 앱와 같은 도구는 Capgo 중요한 역할을 할 수 있습니다. 앱 스토어 승인 없이 앱에 실시간 업데이트를 푸시할 수 있어, 생체 인식 업데이트를 포함한 최신 보안 기능을 계속 반영하면서 Apple과 Android 표준도 모두 준수할 수 있습니다. :::

::: FAQ

내 Capacitor 앱의 생체 인증이 보안 표준과 앱 스토어 가이드라인을 충족하도록 어떻게 보장할 수 있나요?

Capacitor 앱의 생체 인증이 최신 보안 표준과 앱 스토어 정책을 충족하도록 다음 핵심 관행을 따르세요:

  • 신뢰할 수 있는 플러그인 선택: Capacitor의 @capacitor/biometrics 과 같은 신뢰할 수 있는 생체 인증 플러그인을 사용하여 앱의 보안을 확보하고 모든 기기에서 원활하게 작동하도록 하세요.
  • 플랫폼 규칙 준수: 사용자 동의 획득, 안전한 저장소 사용, PIN 또는 비밀번호와 같은 백업 옵션 제공을 포함하여 Apple 및 Android 가이드라인을 준수하세요.
  • 의존성 업데이트 유지: 취약점을 수정하고 변화하는 표준에 부합하도록 앱과 라이브러리를 정기적으로 업데이트하세요.

과 같은 live update 서비스를 사용하면 Capgo 이 과정을 더 원활하게 만들 수 있습니다. 앱 스토어 승인 지연을 우회하여 보안 업데이트나 개선 사항을 즉시 배포할 수 있습니다. 이를 통해 앱이 Apple 및 Android 정책에 따라 안전하고, 규정 준수하며, 최신 상태를 유지할 수 있습니다. :::

::: FAQ

Capacitor 앱에 생체 인증을 통합할 때 개발자가 직면할 수 있는 어려움은 무엇이며, 어떻게 극복할 수 있을까요?

Capacitor 앱에 생체 인증을 구현하려면 여러 가지 어려움이 따릅니다. 여기에는 디바이스 간 호환성 확보, 사용자 권한을 효과적으로 관리하는 것, 민감한 데이터를 안전하게 처리하는 것이 포함됩니다. 이러한 문제를 해결하는 방법은 다음과 같습니다:

  • 디바이스 호환성: Android와 iOS 모두에서 생체 인증 기능을 지원하려면 다음과 같은 플러그인을 고려해 보세요: @capacitor-fingerprint-auth. 이러한 도구는 플랫폼 간 차이를 메워 다양한 디바이스에서 앱이 원활하게 작동하도록 돕습니다.

  • 사용자 권한: 앱이 왜 생체 인증 접근 권한이 필요한지 명확히 설명하는 것이 중요합니다. 사용자에게 정보를 투명하게 제공하고, 권한을 허용하지 않을 때도 앱이 자연스럽게 처리하도록 설계하세요.

  • 데이터 보안: 인증 데이터를 보호하는 것은 매우 중요합니다. 다음을 따르세요: 암호화 모범 사례 를 따르고, 각 플랫폼에서 제공하는 보안 가이드라인을 준수하여 민감한 정보가 안전하게 유지되도록 하세요.

생체 인증 기능과 관련된 업데이트를 하거나 문제를 해결할 때 앱 스토어 승인 번거로움 없이 Capgo 같은 도구를 사용할 수 있습니다. 이를 통해 실시간 업데이트가 가능해 버그를 빠르게 해결하거나 기능을 개선하면서도 Apple 및 Android 정책을 준수할 수 있습니다. :::

Capacitor 앱의 생체 인증부터 계속하기

사용 중이라면 Capacitor 앱의 생체 인증 보안 및 컴플라이언스 계획을 세우려면, 다음 항목과 연결하세요: 암호화 암호화 구현 상세 정보: 컴플라이언스 컴플라이언스 구현 상세 정보: Capgo 보안 스캐너 Capgo Security Scanner 제품 워크플로우: Capgo 보안 Capgo Security 제품 워크플로우 및 Capgo 신뢰 센터 Capgo Trust Center 제품 워크플로우:

Capacitor 앱용 Live updates

웹 레이어 버그가 라이브 상태라면, 앱 스토어 승인을 며칠씩 기다리지 말고 Capgo를 통해 수정 사항을 배포하세요. 네이티브 변경 사항은 정상 리뷰 절차를 그대로 따르는 반면, 사용자는 백그라운드에서 업데이트를 받습니다.

블로그 최신 글

Capgo는 정말 프로페셔널한 모바일 앱을 만드는 데 필요한 최고의 인사이트를 제공합니다.