맞춤형 App Check 공급자 구현

앱 확인은 지원을 내장하고있다 여러 공급자에 대한 : DeviceCheck 및 앱 증명을 애플 플랫폼에서 웹 응용 프로그램에서 안드로이드에 무결성 및 인 SafetyNET를 연주하고 reCAPTCHA를 v3을하고 reCAPTCHA를 기업. ( 개요 ). 이들은 대부분의 개발자의 요구 사항을 충족해야 제공자를 잘 이해된다. 당신은, 그러나, 또한 사용자 정의 응용 프로그램 확인 공급자를 구현할 수 있습니다. 사용자 지정 공급자를 사용하여 필요한 경우입니다 :

  • 당신은 내장 된 이외의 공급자를 사용하고 싶습니다.

  • 당신은 지원되지 않는 방법으로 내장 제공자를 사용하고 싶습니다.

  • 당신은 애플, 안드로이드, 웹 이외의 다른 플랫폼을 사용하여 장치를 확인합니다. 예를 들어, 데스크탑 운영체제 나 인터넷의-것들 장치에 대한 응용 프로그램 확인 공급자를 만들 수 있습니다.

  • 당신은 모든 플랫폼에 자신의 검증 기법을 구현하고자합니다.

개요

사용자 지정 앱 확인 제공자를 구현하려면, 당신은 Node.js를 실행할 수있는 보안 백엔드 환경이 필요 중포 기지 관리 SDK 를 . 이는 클라우드 기능과 같은 컨테이너 플랫폼이 될 수있는 클라우드 실행 , 또는 자신의 서버.

이러한 환경에서, 당신은 당신의 응용 프로그램 클라이언트에서 인증 증명을 수신하고있는 경우 - 진정성의 증거가 신뢰성 평가-수익률을 통과 앱 토큰 확인 네트워크 액세스 서비스를 제공합니다. 사용자 정의 로직을 구현하는 경우 당신은 진정성의 증거로 사용하는 특정 지표가 사용하고있는 타사 공급자, 또는 자신의 발명의 지표 중 하나를에 따라 달라집니다.

일반적으로, 당신은 REST 또는 gRPC 끝점으로이 서비스를 노출하지만,이 세부 사항은 당신에게 달려 있습니다.

토큰 획득 엔드 포인트 작성

  1. 설치 및 관리 SDK를 초기화 .

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

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

  4. 당신이 정통으로 클라이언트를 결정하는 경우, 응용 프로그램 토큰 확인 민트에 관리자 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. 옵션 : 설정이 time-to-live 값 전달하여 사용자 지정 공급자가 발행 한 앱 확인 토큰 (TTL) AppCheckTokenOptions 을 반대 createToken() . 당신은 30 분 7 일 사이의 값으로 TTL을 설정할 수 있습니다. 이 값을 설정하면 다음과 같은 장단점을 알고 있어야 :

    • 보안 : 그것은 유출 또는 공격자에 의해 악용 될 수있는 토큰을 차단하는 창을 감소시키기 때문에 짧은 TTL이는, 강력한 보안을 제공합니다.
    • 성능 : 짧은 TTL이 앱이 더 자주 증명을 수행합니다 의미한다. 네트워크가 수행 것마다 요청에 응용 프로그램의 증명 과정이 지연 추가하기 때문에, 짧은 TTL 앱의 성능에 영향을 미칠 수 있습니다.

    1 시간의 기본 TTL은 대부분의 응용 프로그램에 대한 합리적이다.

다음 단계

이제 사용자 지정 공급자의 서버 측 로직을 구현 한 것으로, 당신에서 그것을 사용하는 방법을 배울 애플 , 안드로이드 클라이언트.