Die Cloud-Clientbibliotheken für Java verwenden die Google-Authentifizierungsbibliothek für Java, um Anfragen zu authentifizieren. Diese Bibliothek unterstützt mehrere Authentifizierungstypen.
Weitere Informationen finden Sie in der README.md und der javadoc des Projekts.
Authentifizierung in einer Google Cloud Umgebung
Wenn Sie Google Cloud -Bibliotheken aus einer Google Cloud -Umgebung (z. B. Compute Engine, Google Kubernetes Engine oder App Engine) verwenden, sind keine zusätzlichen Authentifizierungsschritte erforderlich.
Beispiel für einen Aufruf ohne zusätzliche Authentifizierung:
Storage storage = StorageOptions.getDefaultInstance().getService();
Authentifizierung in Nicht-Google Cloud -Umgebungen
Für die Authentifizierung in einer Umgebung, die nichtGoogle Cloud ist, gibt es drei gängige Optionen:
- Empfohlen: Verwenden Sie ein Dienstkonto.
- Verwenden Sie das Google Cloud SDK mit einer lokalen Testumgebung.
- Verwenden Sie ein vorhandenes OAuth2-Zugriffstoken.
Dienstkonto verwenden
Nachdem Sie den Schlüssel heruntergeladen haben, müssen Sie einen der folgenden Schritte ausführen:
- Definieren Sie die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALSals Speicherort des Schlüssels. Beispiel:
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/my/key.json- Geben Sie die JSON-Datei mit den Anmeldedaten an, wenn Sie die Dienstoptionen erstellen. Dieses
Storage-Objekt hat beispielsweise die erforderlichen Berechtigungen für die Interaktion mit Ihren Cloud Storage-Daten:
Storage storage = StorageOptions.newBuilder() .setCredentials(ServiceAccountCredentials.fromStream(new FileInputStream("/path/to/my/key.json"))) .build() .getService();- Definieren Sie die Umgebungsvariable
Google Cloud SDK mit einer lokalen Testumgebung verwenden
Wenn Sie eine lokale Umgebung für die Entwicklung oder das Testen verwenden, können Sie das Google Cloud SDK verwenden.
Erstellen Sie Standardanmeldedaten für Anwendungen mit gcloud auth application-default login. Cloud-Clientbibliotheken für Java erkennen diese Anmeldedaten automatisch.
Vorhandenes OAuth2-Zugriffstoken verwenden
Wenn Sie ein OAuth2-Zugriffstoken haben, können Sie es zur Authentifizierung verwenden. Wenn Sie das tun, wird das Zugriffstoken nicht automatisch aktualisiert:
Credentials credentials = GoogleCredentials.create(new AccessToken(accessToken, expirationTime));
Storage storage = StorageOptions.newBuilder()
.setCredentials(credentials)
.build()
.getService();
Ein weiteres Beispiel:
Credentials credentials = GoogleCredentials.create(new AccessToken(accessToken, expirationTime));
CloudTasksSettings cloudTasksSettings = CloudTasksSettings.newBuilder()
.setCredentialProvider(FixedCredentialsProvider.create(credentials))
.build();
CloudTasksClient cloudTasksClient = CloudTasksClient.create(cloudTasksSettings);
Standardanmeldedaten für Anwendungen
Wenn Sie keine Anmeldedaten angeben, versuchen die Cloud-Clientbibliotheken für Java, sie mithilfe von GoogleCredentials.getApplicationDefault() aus der Umgebung zu erkennen.
Bei dieser Methode wird in der folgenden Reihenfolge an den folgenden Standorten nach Standardanmeldedaten für Anwendungen gesucht:
- Die von der Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALSreferenzierte Datei mit Anmeldedaten. - Anmeldedaten, die vom Google Cloud SDK-Befehl
gcloud auth application-default loginbereitgestellt werden. - Die integrierten Anmeldedaten von Google App Engine.
- Google Cloud Integrierte Anmeldedaten von Shell.
- In Google Compute Engine integrierte Anmeldedaten für Dienstkonten.
Authentifizierung mit einem API-Schlüssel
Einige Google Cloud APIs unterstützen die Authentifizierung mit API-Schlüsseln.
Wenn Sie einen API-Schlüssel mit Cloud-Clientbibliotheken für Java verwenden möchten, müssen Sie den x-goog-api-key-Header für den entsprechenden Dienstclient manuell festlegen.
So legen Sie beispielsweise den API-Schlüssel mit Language service fest:
public LanguageServiceClient createGrpcClientWithApiKey(String apiKey) throws Exception {
// Manually set the API key using the header
Map<String, String> header = new HashMap<String, String>() { {put("x-goog-api-key", apiKey);}};
FixedHeaderProvider headerProvider = FixedHeaderProvider.create(header);
// Create the client
TransportChannelProvider transportChannelProvider = InstantiatingGrpcChannelProvider.newBuilder().setHeaderProvider(headerProvider).build();
LanguageServiceSettings settings = LanguageServiceSettings.newBuilder().setTransportChannelProvider(transportChannelProvider).build();
LanguageServiceClient client = LanguageServiceClient.create(settings);
return client;
}
Beispiel für die Instanziierung mit dem Language Client über REST:
public LanguageServiceClient createRestClientWithApiKey(String apiKey) throws Exception {
// Manually set the API key header
Map<String, String> header = new HashMap<String, String>() { {put("x-goog-api-key", apiKey);}};
FixedHeaderProvider headerProvider = FixedHeaderProvider.create(header);
// Create the client
TransportChannelProvider transportChannelProvider = InstantiatingHttpJsonChannelProvider.newBuilder().setHeaderProvider(headerProvider).build();
LanguageServiceSettings settings = LanguageServiceSettings.newBuilder().setTransportChannelProvider(transportChannelProvider).build();
LanguageServiceClient client = LanguageServiceClient.create(settings);
return client;
}