Anfragen authentifizieren

Die Cloud-Clientbibliotheken für Java verwenden die Google Auth Library for Java, um Anfragen zu authentifizieren. Diese Bibliothek unterstützt mehrere Authentifizierungstypen. Weitere Informationen finden Sie in der README.md-Dokumentation des Projekts und im javadoc.

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:

  1. Empfohlen: Verwenden Sie ein Dienstkonto.
  2. Google Cloud SDK mit einer lokalen Testumgebung verwenden
  3. Verwenden Sie ein vorhandenes OAuth2-Zugriffstoken.

Dienstkonto verwenden

  1. Generieren Sie einen JSON-Dienstkontoschlüssel.

  2. Nachdem Sie den Schlüssel heruntergeladen haben, müssen Sie einen der folgenden Schritte ausführen:

    • Definieren Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS als 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();
    

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:

  1. Die Anmeldedatendatei, auf die von der Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS verwiesen wird.
  2. Anmeldedaten, die vom Google Cloud SDK-Befehl gcloud auth application-default login bereitgestellt werden.
  3. In Google App Engine integrierte Anmeldedaten.
  4. Cloud de Confiance by S3NS Integrierte Anmeldedaten von Shell.
  5. Die integrierten Dienstkontoanmeldedaten von Google Compute Engine.

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;
  }