Przekazywanie uprawnień w całej domenie Google Workspace

Interfejs Cloud Search Query API wymaga autoryzacji wywołań interfejsu API za pomocą protokołu OAuth dane logowania należące do licencjonowanego użytkownika w Twojej domenie. Domyślnie usługa które służą do uzyskiwania dostępu do interfejsów API indeksowania i konfigurowania, nie mogą będą używane w wywołaniach interfejsu Query API, ponieważ nie są użytkownikami domeny w Cloud Search lub Google Workspace. Jeśli chcesz korzystać z konta usługi, gdy: uwierzytelniania wywołań interfejsu API zapytań, administrator domeny może przyznać kontu dostęp do danych użytkownika w całej domenie – jest to tzw. przekazywanie uprawnień w całej domenie. Konto usługi z przekazanym dostępem mogą odgrywać rolę dowolnego użytkownika, w tym użytkowników z dostępem do Cloud Search.

Tworzenie konta usługi i danych logowania

Jeśli nie masz jeszcze danych logowania do konta usługi, zapoznaj się z informacjami o tym, Utwórz dane logowania na konto usługi.

Przekazywanie uprawnień w całej domenie do konta usługi

Aby uzyskać dostęp do danych użytkownika w domenie Google Workspace (konto usługi, które musi mieć dostęp superadministrator domeny. Więcej informacji o przekazywaniu dostępu w całej domenie znajdziesz w artykule Kontrola nad dostępem do interfejsu Google Workspace API przy użyciu przekazywania dostępu w całej domenie

Aby przekazać uprawnienia do całej domeny kontu usługi:

  1. W konsoli administracyjnej domeny otwórz Menu główne > Bezpieczeństwo > Dostęp do danych i kontrola nad nimi > Dostęp do interfejsów API
  2. W panelu Przekazywanie dostępu w całej domenie kliknij Zarządzaj w całej domenie. Przekazywanie dostępu.

  3. Kliknij Dodaj nowy.

  4. W polu Identyfikator klienta wpisz identyfikator klienta uzyskany z opisane powyżej kroki tworzenia konta usługi.

  5. W polu Zakresy protokołu OAuth wpisz rozdzieloną przecinkami listę zakresów. wymagane w przypadku danej aplikacji. Używanie zakresu https://www.googleapis.com/auth/cloud_search.query w przypadku wyszukiwarek za pomocą interfejsu Query API.

  6. Kliknij Autoryzuj.

Twoje konto usługi ma teraz dostęp do interfejsu Cloud Search Query API w całej domenie i może odgrywać rolę dowolnego użytkownika w Twojej domenie w tym zakresie. Wszystko gotowe utworzyć instancję autoryzowanego obiektu usługi Cloud Search API w imieniu swojego użytkowników domeny.

Tworzenie instancji obiektu usługi Cloud Search API

Z tej sekcji dowiesz się, jak utworzyć instancję usługi Cloud Search API, a następnie autoryzuj ją do wysyłania żądań do interfejsu API przy użyciu OAuth 2.0 i danych logowania do przekazywania dostępu w całej domenie Google Workspace. Przykłady odczytać informacje o koncie usługi z pliku klucza prywatnego w formacie JSON.

Java

import java.util.Collections;
import java.io.FileInputStream;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.services.cloudsearch.v1.CloudSearch;
import com.google.api.services.cloudsearch.v1.CloudSearchScopes;
...

/** Path to the Service Account's Private Key file */
private static final String SERVICE_ACCOUNT_FILE_PATH = "/path/to/key.json";

/**
 * Build and return a Cloud Search service object authorized with the service
 * account that acts on behalf of the given user.
 *
 * @param userEmail The email of the user to impersonate. Needs permissions to access Cloud Search.
 * @return CloudSearch service object that is ready to make requests.
 */
public static CloudSearch getCloudSearchAPIService(String userEmail)
    throws FileNotFoundException, IOException {

  FileInputStream credsFile = new FileInputStream(SERVICE_ACCOUNT_FILE_PATH);

  GoogleCredential init = GoogleCredential.fromStream(credsFile);

  HttpTransport httpTransport = init.getTransport();
  JsonFactory jsonFactory = init.getJsonFactory();

  GoogleCredential creds = new GoogleCredential.Builder()
      .setTransport(httpTransport)
      .setJsonFactory(jsonFactory)
      .setServiceAccountId(init.getServiceAccountId())
      .setServiceAccountPrivateKey(init.getServiceAccountPrivateKey())
      .setServiceAccountScopes(Collections.singleton(CloudSearchScopes.CLOUD_SEARCH_QUERY))
      .setServiceAccountUser(userEmail)
      .build();

  CloudSearch service = new CloudSearch.Builder(httpTransport, jsonFactory, creds).build();

  return service;
}

Python

from google.oauth2 import service_account
from googleapiclient.discovery import build

# Path to the Service Account's Private Key file
SERVICE_ACCOUNT_FILE_PATH = "/path/to/key.json"

def create_query_api_service(user_email):
    """Build and return a CloudSearch service object authorized with the service
    account that acts on behalf of the given user.

    Args:
        user_email: The email of the user to impersonate. Needs permissions to access Cloud Search.
    Returns:
        Cloud Search Query API service object that is ready to make requests.
    """
    credentials = service_account.Credentials.from_service_account_file(
        SERVICE_ACCOUNT_FILE_PATH,
        scopes=['https://www.googleapis.com/auth/cloud_search.query'])

    delegated_credentials = credentials.with_subject(user_email)

    return build("cloudsearch", "v1", credentials=delegated_credentials)