6

Pracuję na platformie chmurowej Google i muszę uzyskać dostęp do funkcji w chmurze za pomocą aplikacji internetowej innej niż Java, tak jak próbuję przechowywać i pobierać obiekt z pamięci masowej Google w chmurze przy użyciu Google JSON API do przechowywania w chmurze.Uwierzytelnianie na platformie chmurowej Google

Przed uzyskaniem dostępu do tych dokumentów potrzebuję uwierzytelnienia mojej aplikacji, więc dowiedziałem się, że autoryzacja API ma autoryzowany dostęp.

kiedy starałem się uzyskać poświadczenia z platformy Google Cloud I skończyć z trzech wyborów poświadczeń jako

  • API Key
  • OAuth ID Client
  • Służby Key Account

Przeszedłem przez dokumentację GCP, ale nie otrzymałem jasnych informacji, które wyróżniają te spośród nich. Jestem całkiem nowy w GCP, więc proszę, podziel się informacją lub linkiem do bloga, który wyjaśnia W tym typie poświadczeń znajdują się przykładowe programy Java, które pokazują, jak korzystać z interfejsu API klienta Google Cloud Biblioteka Cloud.

Odpowiedz

6

Google Cloud Platformy Auth Przewodnik jest ostateczne źródło tutaj: https://cloud.google.com/docs/authentication

różne mechanizmy uwierzytelniania Google służyć różnym celom, więc pozwól mi wyjaśnić te Pytałeś o, i właściwym wyborem dla Ciebie powinno stać się jasne.

Klucze API umożliwiają zidentyfikowanie projektu, z którego pochodzi wywołanie API w imieniu użytkownika. Są one dobre do ograniczania żądań złożonych w imieniu twojego projektu z limitami. Klucz API zazwyczaj nie jest uważany za bezpieczny, ponieważ jest zwykle osadzony w aplikacjach klienckich i stronach internetowych. Z tego powodu klucze interfejsu API nie zapewniają uwierzytelniania ani autoryzacji. Jeśli anonimowy użytkownik nie będzie w stanie nawiązać połączenia, klucz API nie będzie wystarczający.

Dalej, OAuth. OAuth to sposób na przekształcenie prawdziwych, ludzkich użytkowników z kontami Google w uwierzytelnione wywołania API. Użyjesz go, gdy chcesz zrobić coś dla siebie, np. Gdy używasz aplikacji lokalnej, np. gcloud, lub jeśli tworzysz stronę internetową, która musi prosić ludzi o pozwolenie na robienie rzeczy w Google Cloud na ich imieniu. Proces ten obejmuje identyfikatory i tajne identyfikatory klientów, a kończy się odświeżaniem tokenów i tokenów dostępu. Istnieje kilka różnych smaków.

Wreszcie konta usług. Jeśli Twoja aplikacja działa gdzieś sama, a nie jakaś konkretna osoba, powinieneś ją modelować, tworząc konto usługi dla swojej aplikacji. Konta usług są specjalnymi użytkownikami, którzy nie mają hasła. Zamiast tego mają prywatne pliki kluczy, które można wdrożyć w aplikacji, aby mogły same się uwierzytelniać. Zazwyczaj jest to wymagane, o ile aplikacja nie musi działać w imieniu określonych użytkowników (np. Program do zarządzania chmurą, taki jak gcloud lub gsutil).

Model Google Cloud Java library jest wyposażony w funkcję o nazwie "Application Default Credentials", która eliminuje konieczność konfigurowania auth, jeśli aplikacja działa w App Engine lub GCE. Może również zadbać o auth, jeśli chcesz uruchomić kod na swoim komputerze lokalnym i mieć zainstalowany gcloud.

Oto an example z Compute programu silnik, który tworzy wiadro GCS:

Storage storage = StorageOptions.getDefaultInstance().getService(); 
Bucket bucket = storage.create(BucketInfo.of("myBucketName")); 

zauważyć, jak nie powiedzieć nic na temat uwierzytelniania w ogóle. Domyślne poświadczenia aplikacji dbają o wybór odpowiedniego konta usługi lub użytkownika. Zakładamy, że jesteś w takim środowisku. Jeśli masz prywatny plik .json, możesz to zrobić:

Storage storage = StorageOptions.newBuilder() 
    .setProjectId(PROJECT_ID) 
    .setCredentials(GoogleCredentials.fromStream(
     new FileInputStream(PATH_TO_JSON_KEY))).build(); 
Bucket bucket = storage.create(BucketInfo.of("myBucketName")); 

I to wszystko!

+0

dziękuję za natychmiastową odpowiedź i wyjaśnienie wyboru! GoogleCredentials uwierzytelnia użytkownika przy użyciu klucza konta usługi, więc możesz podać kod interfejsu API pokazujący, jak używać identyfikatora klienta OAuth i klucza API, ponieważ muszę wdrożyć uwierzytelnianie przy użyciu tych wszystkich trzech. proszę podać przykład interfejsu API chmury klienta Google'a –

+0

Istnieją różne smaki OAuth. Będę musiał wiedzieć więcej o tym, co chcesz zrobić, by Twoja aplikacja dobrze odpowiedziała. Poniżej znajduje się ogólny przewodnik po usłudze Google OAuth: https://developers.google.com/identity/protocols/OAuth2 oraz biblioteka Java i przykłady tutaj: https://developers.google.com/api-client-library/java/ google-oauth-java-client/oauth2 –

+0

Pracuję nad prostą aplikacją, która dla seck pobiera obiekty z GCS i przetwarza je lokalnie, teraz muszę podać opcje użycia dowolnego typu poświadczeń, jakich chce użytkownik do uwierzytelniania, np. może to być klient OAuth Klucz konta ID lub Service itp. Mogę użyć klucza konta usługi JSON do uwierzytelnienia i chcę użyć tajnego pliku klienta JSON pobranego z identyfikatora klienta OAuth. proszę zasugerować "przykład interfejsu API chmury klienta Google" –