Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

Chroń dane logowania do chmury w aplikacji Firebase ML na Androida

Zadbaj o dobrą organizację dzięki kolekcji Zapisuj i kategoryzuj treści zgodnie ze swoimi preferencjami.

Jeśli Twoja aplikacja na Androida korzysta z jednego z chmurowych interfejsów API Firebase ML, przed uruchomieniem aplikacji w środowisku produkcyjnym wykonaj dodatkowe czynności, 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. (Pamiętaj, że tylko nierootowane urządzenia mogą uwierzytelniać się przy użyciu opisanej metody).

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

1. Zarejestruj swoje aplikacje produkcyjne w Firebase

Najpierw zarejestruj aplikacje produkcyjne w Firebase.

  1. Upewnij się, że masz podpisy SHA-1 swojej aplikacji. Zapoznaj się z sekcją Uwierzytelnianie klienta , aby dowiedzieć się, jak to zrobić.

  2. Przejdź do projektu w konsoli Firebase, a następnie wybierz kartę Ustawienia .

  3. Przewiń w dół do karty Twoje aplikacje , a następnie wybierz swoją aplikację na Androida.

  4. Dodaj podpis SHA-1 swojej aplikacji do informacji o aplikacji.

2. Ogranicz zakres kluczy API

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

  1. Otwórz stronę Poświadczenia w Google Cloud Console. Po wyświetleniu monitu wybierz swój projekt.

  2. Dla każdego istniejącego klucza API na liście otwórz widok do edycji.

  3. W sekcji Ograniczenia API wybierz Ogranicz klucz , a następnie dodaj do listy wszystkie API, do których chcesz mieć dostęp za pomocą klucza API. Upewnij się, że nie zawierasz interfejsu Cloud Vision API.

    Podczas konfigurowania ograniczeń interfejsu API klucza API jawnie deklarujesz interfejsy API, do których klucz ma dostęp. Domyślnie, gdy w sekcji Ograniczenia interfejsu API zaznaczona jest opcja Nie ograniczaj klucza , klucz interfejsu API może być używany do uzyskiwania dostępu do dowolnego interfejsu API, który jest włączony dla projektu.

Teraz Twoje istniejące klucze API nie będą zapewniać dostępu do usług Cloud ML, ale każdy klucz będzie nadal działał dla dowolnych interfejsów API dodanych do jego listy ograniczeń API .

Pamiętaj, że jeśli w przyszłości włączysz dodatkowe interfejsy API, musisz dodać je do listy ograniczeń interfejsu API dla odpowiedniego klucza interfejsu API.

3. Utwórz i użyj klucza API 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 interfejsu API do uzyskiwania dostępu do usług Google Cloud w środowiskach, w których uwierzytelnianie aplikacji nie jest możliwe, na przykład w przypadku uruchamiania na emulatorach.

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

    1. Otwórz stronę Poświadczenia w Google Cloud Console. Po wyświetleniu monitu wybierz swój projekt.

    2. Kliknij Utwórz poświadczenia > 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 mieć pewność, że nowy klucz debugowania interfejsu API nie zostanie ujawniony w wydanej aplikacji, określ klucz debugowania interfejsu API w pliku manifestu systemu Android używanym tylko do kompilacji debugowania:

    1. Jeśli nie masz jeszcze manifestu debugowania, utwórz go, klikając pozycję plik > nowy > inne > plik manifestu systemu Android i wybierając debug z docelowych zestawów źródeł.

    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ła dopasowywania odcisku cyfrowego certyfikatu do uwierzytelniania klienta w środowisku produkcyjnym i używała kluczy interfejsu API – klucza debugowania – tylko w kompilacjach debugowania:

    Java

    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

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