커스텀 앱 체크 제공자 구현

App Check에는 DeviceCheck 및 App Attest 등 여러 제공자가 기본적으로 지원됩니다. Apple 플랫폼, Android의 Play Integrity 및 SafetyNet 웹 앱의 reCAPTCHA Enterprise (개요) 대부분의 개발자 요구를 충족하는 잘 알려진 제공자입니다. 하지만 자체 맞춤 App Check를 구현할 수도 있습니다. 제공업체 다음과 같은 경우 커스텀 제공자를 사용해야 합니다.

  • 기본 제공자 이외의 다른 제공자를 사용하려고 합니다.

  • 지원되지 않는 방식으로 기본 제공자를 사용하려고 합니다.

  • Apple, Android, 웹 이외의 플랫폼을 사용하여 기기를 인증하려고 합니다. 예를 들어 데스크톱 OS용 App Check 제공업체를 만들거나 사물 인터넷 기기.

  • 모든 플랫폼에서 자체 인증 기법을 구현하려고 합니다.

개요

맞춤 App Check 제공자를 구현하려면 보안 백엔드가 필요합니다. Node.js Firebase Admin SDK를 실행할 수 있는 환경 컨테이너 플랫폼인 Cloud Functions일 수 있습니다. Cloud Run 또는 자체 서버입니다.

이 환경에서는 네트워크에 액세스할 수 있는 서비스를 제공하여 앱 클라이언트로부터 진위 증명서를 받아야 하며, 신뢰성이 진위성 평가를 통과하면 App Check을 반환합니다. 토큰입니다. 신뢰성 증명으로 사용하는 특정 표시기는 사용 중인 타사 공급업체 또는 자체 개발 표시기(커스텀 로직을 구현하는 경우)에 따라 달라집니다.

일반적으로 이 서비스를 REST 또는 gRPC 엔드포인트로 노출하지만, 세부정보는 직접 결정합니다.

토큰 획득 엔드포인트 만들기

  1. Admin SDK를 설치하고 초기화합니다.

  2. 클라이언트로부터 인증 데이터를 수신할 수 있으며 네트워크에 액세스할 수 있는 엔드포인트를 만듭니다. 예를 들어 다음과 같이 Cloud Functions을 사용합니다.

    // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken
    exports.fetchAppCheckToken = functions.https.onRequest((request, response) => {
      // ...
    });
    
  3. 신뢰성 데이터를 평가하는 엔드포인트 로직에 추가합니다. 이것은 맞춤 App Check 제공자의 핵심 로직(필요한 경우) 직접 작성해 봅니다.

  4. 클라이언트가 진짜라고 판단되면 Admin SDK를 사용하여 발급합니다. App Check 토큰을 가져와서 이 토큰과 만료 시간을 클라이언트에 반환합니다.

    const admin = require('firebase-admin');
    admin.initializeApp();
    
    // ...
    
    admin.appCheck().createToken(appId)
        .then(function (appCheckToken) {
          // Token expires in an hour.
          const expiresAt = Math.floor(Date.now() / 1000) + 60 * 60;
    
          // Return appCheckToken and expiresAt to the client.
        })
       .catch(function (err) {
         console.error('Unable to create App Check token.');
         console.error(err);
       });
    

    클라이언트의 신뢰성을 확인할 수 없는 경우 오류를 반환합니다(예: HTTP 403 오류 반환).

  5. 선택사항: 다음에서 발급한 App Check 토큰의 TTL (수명) 설정 AppCheckTokenOptions 객체를 createToken()입니다. TTL은 30분에서 7일 사이의 값으로 설정할 수 있습니다. 이 값을 설정할 때는 다음 장단점을 고려하세요.

    • 보안: 유출되거나 가로채진 토큰이 공격자에 의해 악용될 수 있는 기간을 줄이기 때문에 TTL이 짧을수록 강력한 보안을 제공합니다.
    • 성능: TTL이 짧을수록 앱에서 증명을 더 자주 수행합니다. 앱 증명 프로세스는 실행될 때마다 네트워크 요청에 지연 시간이 추가되므로 짧은 TTL은 앱 성능에 영향을 줄 수 있습니다.

    대부분의 앱에 기본 TTL인 1시간이 적합합니다.

다음 단계

이제 커스텀 제공자의 서버 측 로직을 구현했으므로 Apple, Android, 클라이언트에서 커스텀 제공자를 사용하는 방법을 알아보세요.