Google is committed to advancing racial equity for Black communities. See how.
Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

Chroń dane uwierzytelniające w chmurze aplikacji Firebase ML na Androida

Jeśli Twoja aplikacja na Androida korzysta z jednego z interfejsów API w chmurze Firebase ML, przed uruchomieniem aplikacji w środowisku produkcyjnym należy podjąć dodatkowe kroki, aby zapobiec nieautoryzowanemu dostępowi do interfejsu API.

W przypadku aplikacji produkcyjnych zapewnisz, że tylko uwierzytelnieni klienci będą mieli dostęp do usług w chmurze. (Należy pamiętać, że tylko urządzenia niezrootowane mogą uwierzytelniać się przy użyciu opisanej metody).

Następnie utworzysz klucz interfejsu API tylko do debugowania, którego możesz używać dla wygody podczas testowania i programowania.

1. Zarejestruj swoje aplikacje produkcyjne w Firebase

Najpierw zarejestruj swoje aplikacje produkcyjne w Firebase.

Najszybszym sposobem na to jest połączenie projektu Firebase z projektem Google Play. Możesz to zrobić w sekcji Integracje ustawień projektu w konsoli Firebase.

Po połączeniu projektów podpisy SHA-1 aplikacji produkcyjnych są importowane do projektu Firebase, co możesz potwierdzić na stronie Ustawienia . Pamiętaj, że połączenie projektów Firebase i Google Play sprawia, że ​​inne dane Google Play, w tym statystyki awarii i przychodów, są dostępne dla Firebase oraz dane Firebase, w tym dane analityczne, dostępne dla Google Play.

Alternatywnie, jeśli nie chcesz udostępniać danych między projektami Firebase i Google Play, możesz samodzielnie określić podpisy SHA-1 aplikacji na stronie Ustawienia. Zobacz Uwierzytelnianie klienta, aby dowiedzieć się, jak uzyskać podpisy SHA-1 aplikacji.

2. Ogranicz zakres kluczy API

Następnie skonfiguruj istniejące klucze API, aby uniemożliwić dostęp do interfejsu Cloud Vision API:

  1. Otwórz stronę Credentials w konsoli Cloud.

  2. Dla każdego klucza API na liście otwórz widok edycji, a w sekcji Ograniczenia dotyczące kluczy dodaj do listy wszystkie dostępne interfejsy API z wyjątkiem interfejsu API Cloud Vision.

3. Utwórz i użyj klucza interfejsu API służącego tylko do debugowania

Na koniec utwórz nowy klucz API, który będzie używany tylko do programowania. Firebase ML może używać tego klucza API, aby uzyskiwać dostęp do usług w chmurze w środowiskach, w których uwierzytelnianie aplikacji nie jest możliwe, na przykład podczas uruchamiania na emulatorach.

  1. Utwórz nowy klucz API, który będzie używany do programowania:

    1. Otwórz stronę Credentials w konsoli Cloud.
    2. Kliknij Utwórz dane logowania> Klucz API i zanotuj nowy klucz API. Ten klucz umożliwia dostęp do interfejsu API z nieuwierzytelnionych aplikacji, więc zachowaj ten klucz w tajemnicy .
  2. Aby upewnić się, że nowy klucz API debugowania nie wycieknie z wydaną aplikacją, określ klucz API debugowania w pliku manifestu systemu Android używanym tylko do debugowania kompilacji:

    1. Jeśli nie masz jeszcze manifestu debugowania, utwórz go, klikając Plik> Nowy> Inne> Plik manifestu systemu Android i wybierając debug z docelowych zestawów źródłowych.

    2. W manifeście debugowania dodaj następującą deklarację:

      <application>
      <meta-data
          android:name="com.firebase.ml.cloud.ApiKeyForDebug"
          android:value="your-debug-api-key" />
      </application>
      
  3. W swojej aplikacji skonfiguruj Firebase ML tak, aby używał dopasowywania odcisku cyfrowego certyfikatu do uwierzytelniania klienta w środowisku produkcyjnym i używania kluczy API - klucza debugowania - tylko w kompilacjach do debugowania:

    Jawa

    FirebaseVisionCloudImageLabelerOptions.Builder optionsBuilder =
            new FirebaseVisionCloudImageLabelerOptions.Builder();
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch();
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f);
    // ...
    
    // And lastly:
    FirebaseVisionCloudImageLabelerOptions options = optionsBuilder.build();
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage);

    Kotlin + KTX

    val optionsBuilder = FirebaseVisionCloudImageLabelerOptions.Builder()
    if (!BuildConfig.DEBUG) {
        // Requires physical, non-rooted device:
        optionsBuilder.enforceCertFingerprintMatch()
    }
    
    // Set other options. For example:
    optionsBuilder.setConfidenceThreshold(0.8f)
    // ...
    
    // And lastly:
    val options = optionsBuilder.build()
    FirebaseVision.getInstance().getCloudImageLabeler(options).processImage(myImage)

Następne kroki

Zapoznaj się z listą kontrolną uruchamiania, aby dowiedzieć się, jak przygotować aplikację do uruchomienia podczas korzystania z innych funkcji Firebase.