إجراء تفويض على مستوى نطاق Google Workspace

تتطلب واجهة برمجة تطبيقات طلبات البحث في Cloud Search أن يتم تفويض طلبات البيانات من واجهة برمجة التطبيقات باستخدام بروتوكول OAuth بيانات الاعتماد الخاصة بمستخدم مُرخَّص في نطاقك. بشكل افتراضي، التي تُستخدم للوصول إلى واجهات برمجة التطبيقات للفهرسة والتهيئة، يمكن استخدامها في طلبات البيانات من واجهة برمجة التطبيقات لطلب البحث لأنها ليست من مستخدمي النطاق باستخدام Cloud Search أو تراخيص Google Workspace. إذا كنت تريد استخدام حساب الخدمة في حال مصادقة طلبات البيانات من واجهة برمجة التطبيقات لطلب البحث، يمكن لمشرف النطاق منح الحساب الوصول على مستوى النطاق إلى بيانات المستخدم - وهذا ما يُعرف تفويض المرجع على مستوى النطاق. يشير هذا المصطلح إلى حساب خدمة مفوَّض يمكن للهيئة انتحال هوية أي مستخدم، بما في ذلك المستخدمين الذين لديهم إذن بالوصول إلى Cloud Search.

إنشاء حساب الخدمة وبيانات الاعتماد

إذا لم يكن لديك بيانات اعتماد حساب الخدمة حتى الآن، يُرجى الرجوع إلى أنشئ بيانات اعتماد لحساب الخدمة.

تفويض التفويض على مستوى النطاق لحساب الخدمة

للوصول إلى بيانات المستخدمين في نطاق Google Workspace، حساب الخدمة الذي الذي أنشأته في حاجة إلى أن يمنح أحد المشرفين المتميزين حق الوصول إلى النطاق. لمزيد من المعلومات حول التفويض على مستوى النطاق، يُرجى الاطّلاع على التحكّم في الوصول إلى Google Workspace API من خلال التفويض على مستوى النطاق

لتفويض صلاحية على مستوى النطاق لحساب خدمة:

  1. من وحدة تحكُّم المشرف في نطاقك، انتقِل إلى القائمة الرئيسية > الأمان > التحكّم بالبيانات والوصول > عناصر تحكُّم واجهة برمجة التطبيقات
  2. في لوحة التفويض على مستوى النطاق، اختَر إدارة على مستوى النطاق. التفويض:

  3. انقر على إضافة فلتر جديد.

  4. في الحقل معرّف العميل، أدخِل معرّف العميل الذي تم الحصول عليه من خطوات إنشاء حساب الخدمة أعلاه.

  5. في حقل نطاقات OAuth، أدخِل قائمة النطاقات مفصولة بفواصل. مطلوبة لتطبيقك. استخدام النطاق https://www.googleapis.com/auth/cloud_search.query لتطبيقات البحث باستخدام واجهة برمجة تطبيقات الاستعلام.

  6. انقر على تفويض.

يمتلك حساب الخدمة الآن إمكانية وصول على مستوى النطاق إلى واجهة برمجة تطبيقات طلبات البحث في Cloud Search. ويمكنهم انتحال هوية أي مستخدم لنطاقك في هذا النطاق. أنت جاهز لـ إنشاء مثيل لعنصر خدمة Cloud Search API مُعتمَد بالنيابة عن مستخدمي النطاق.

إنشاء مثيل لعنصر خدمة Cloud Search API

يعرض هذا القسم كيفية إنشاء مثيل لعنصر خدمة Cloud Search API، ثم السماح له بإرسال طلبات من واجهة برمجة التطبيقات باستخدام OAuth 2.0 وإعدادات حساب الخدمة بيانات الاعتماد لإجراء تفويض على مستوى نطاق Google Workspace. الأمثلة قراءة معلومات حساب الخدمة من ملف المفتاح الخاص بتنسيق 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)