Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

맞춤형 App Check 공급자 구현

앱 체크는 Apple 플랫폼의 DeviceCheck 및 App Attest, Android의 Play Integrity 및 SafetyNet, 웹 앱의 reCAPTCHA v3 및 reCAPTCHA Enterprise( 개요 )와 같은 여러 공급자에 대한 기본 제공 지원을 제공합니다. 이들은 대부분의 개발자의 요구를 충족해야 하는 잘 알려진 공급자입니다. 그러나 사용자 지정 앱 체크 공급자를 구현할 수도 있습니다. 다음과 같은 경우 사용자 지정 공급자를 사용해야 합니다.

  • 기본 제공 공급자가 아닌 다른 공급자를 사용하려고 합니다.

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

  • Apple, Android 및 웹 이외의 플랫폼을 사용하여 장치를 확인하려고 합니다. 예를 들어 데스크톱 OS 또는 사물 인터넷 장치용 앱 체크 공급자를 생성할 수 있습니다.

  • 모든 플랫폼에서 고유한 검증 기술을 구현하려고 합니다.

개요

맞춤 앱 체크 공급자를 구현하려면 Node.js Firebase Admin SDK 를 실행할 수 있는 안전한 백엔드 환경이 필요합니다. 이는 Cloud Functions, Cloud Run 과 같은 컨테이너 플랫폼 또는 자체 서버일 수 있습니다.

이 환경에서 앱 클라이언트로부터 인증 증명을 수신하고 인증 증명이 인증 평가를 통과하면 앱 체크 토큰을 반환하는 네트워크 액세스 가능 서비스를 제공하게 됩니다. 진위 증명으로 사용하는 특정 지표는 사용 중인 타사 공급자 또는 사용자 지정 논리를 구현하는 경우 자체 발명의 지표에 따라 달라집니다.

일반적으로 이 서비스를 REST 또는 gRPC 끝점으로 노출하지만 이 세부 정보는 사용자에게 달려 있습니다.

토큰 획득 끝점 만들기

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

  2. 클라이언트에서 인증 데이터를 수신할 수 있는 네트워크 액세스 가능 엔드포인트를 만듭니다. 예를 들어 Cloud Functions를 사용하는 경우:

    // Create endpoint at https://example-app.cloudfunctions.net/fetchAppCheckToken
    exports.fetchAppCheckToken = functions.https.onCall((authenticityData, context) => {
      // ...
    });
    
  3. 진위 데이터를 평가하는 엔드포인트 로직에 추가합니다. 이것은 사용자 지정 앱 체크 공급자의 핵심 논리이며 직접 작성해야 합니다.

  4. 클라이언트가 인증된 것으로 판단되면 Admin SDK를 사용하여 앱 체크 토큰을 생성하고 토큰과 만료 시간을 클라이언트에 반환합니다.

    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. 선택 사항 : AppCheckTokenOptions 개체를 createToken() 에 전달하여 사용자 지정 공급자가 발급한 앱 체크 토큰의 TTL(수명)을 설정합니다. TTL은 30분에서 7일 사이의 값으로 설정할 수 있습니다. 이 값을 설정할 때 다음 장단점에 유의하십시오.

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

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

다음 단계

이제 사용자 지정 공급자의 서버 측 논리를 구현 했으므로 Apple , Android 클라이언트에서 이를 사용하는 방법을 알아봅니다.