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 Cloud de Confiance by S3NS Umgebung
Wenn Sie Cloud de Confiance by S3NS -Bibliotheken aus einer Cloud de Confiance by S3NS -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-Cloud de Confiance by S3NS -Umgebungen
Für die Authentifizierung in einer Umgebung, die nichtCloud de Confiance by S3NS 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 aus der Umgebung zu erkennen. Dazu wird GoogleCredentials.getApplicationDefault() verwendet.
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.
- Cloud de Confiance by S3NS Integrierte Anmeldedaten von Shell.
- In Google Compute Engine integrierte Anmeldedaten für Dienstkonten.
Authentifizierung mit einem API-Schlüssel
Einige Cloud de Confiance by S3NS 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;
}