Menyiapkan Groups API
Halaman ini menjelaskan cara menyiapkan Cloud Identity Groups API.
Sebelum memulai
Enable the Cloud Identity API.
Menginstal library klien
Untuk menginstal library klien, jalankan perintah berikut:
Python
Untuk mengetahui informasi selengkapnya tentang cara menyiapkan lingkungan pengembangan Python, lihat Panduan Penyiapan Lingkungan Pengembangan Python.
pip install --upgrade google-api-python-client google-auth \
google-auth-oauthlib google-auth-httplib2
Mengautentikasi dengan Groups API
Anda dapat mengautentikasi dengan Groups API sebagai pengguna akhir, sebagai admin grup akun layanan tanpa delegasi tingkat domain, atau sebagai akun layanan dengan delegasi tingkat domain. Bagian berikut menjelaskan setiap metode.
Mengautentikasi sebagai pengguna akhir
Jika Anda bukan administrator, atau membuat aplikasi yang bertindak atas nama pengguna yang bukan administrator, lihat Menggunakan OAuth 2.0 untuk aplikasi server web, lalu lihat bagian Membuat instance klien di bawah.
Melakukan autentikasi sebagai akun layanan tanpa delegasi tingkat domain
Jika Anda menggunakan akun layanan dan ingin menggunakannya untuk mengelola grup sebagai admin grup, selesaikan langkah-langkah di bawah. Metode autentikasi ini harus digunakan jika Anda ingin tindakan akun layanan didaftarkan dalam log audit sebagai akun layanan.
Menetapkan peran admin ke akun layanan
Pertama, Anda harus menetapkan Peran Administrator Grup Google Workspace (Administrator Grup) ke akun layanan yang ingin Anda delegasikan, menggunakan Peran Admin SDK dan Role Assignments API. Langkah ini memberi akun layanan akses ke grup domain, tetapi tidak ke resource lain.
Lihat Panduan Mengelola Peran untuk mengetahui informasi umum tentang cara mengelola Peran menggunakan Admin SDK API. Ikuti langkah-langkah di bawah untuk menetapkan peran Group Administrator untuk akun layanan Anda.
Di konsol Google Cloud, buka halaman Service Accounts:
Klik nama akun layanan yang ingin Anda gunakan dengan Groups API.
Salin ID Unik akun layanan.
Panggil Admin SDK Roles API untuk mengidentifikasi
roleId
untuk Group Administrator. Anda dapat menggunakan API Explorer dalam dokumentasi Admin SDK untuk melakukannya.Panggil Role Assignments API dengan isi permintaan berikut:
{ "assignedTo": "SERVICE_ACCOUNT_UNIQUE_ID" "roleId": "ROLE_ID" "scopeType": "CUSTOMER" "kind": "admin#directory#roleAssignment" }
Mengautentikasi dan memberikan otorisasi ke akun layanan
Sekarang Anda memiliki akun layanan dengan peran Group Administrator. Langkah kedua adalah menyelesaikan proses autentikasi OAuth untuk akun layanan.
Jika Anda mengembangkan aplikasi di Google Cloud dan akun layanan adalah pemilik project, Anda dapat menggunakan kredensial default aplikasi sebagai gantinya, yang dapat menyederhanakan proses. Lihat Melakukan Autentikasi sebagai Akun Layanan untuk mengetahui informasi selengkapnya.
Jika akun layanan bukan pemilik project, ikuti petunjuk di bawah.
Dalam kedua kasus tersebut, cakupan yang berlaku untuk Cloud Identity Groups API adalah
https://www.googleapis.com/auth/cloud-identity.groups
.
Dengan kredensial yang baru saja Anda buat, buat token akses.
Java
GoogleCredential credential = new GoogleCredential.Builder() .setTransport(httpTransport) .setJsonFactory(JSON_FACTORY) .setServiceAccountId(emailAddress) .setServiceAccountPrivateKeyFromP12File(new File("MyProject.p12")) .setServiceAccountScopes(ImmutableList.of("https://www.googleapis.com/auth/cloud-identity.groups")) .build();
Simpan token akses yang dihasilkan.
Kode lengkap untuk membuat token akses untuk akun layanan
Java
GenerateServiceAccountOauth2Token.java
package com.google.tools;
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.common.collect.ImmutableList;
import java.io.FileInputStream;
/** Command line tool to generate Oauth2 token for a given service account
/** without domain wide delegation. */
public final class GenerateServiceAccountOauth2Token {
private static final ImmutableList<String> API_SCOPES =
ImmutableList.of(
"https://www.googleapis.com/auth/cloud-identity.groups",
"https://www.googleapis.com/auth/admin.directory.group",
"https://www.googleapis.com/auth/admin.directory.group.member",
"https://www.googleapis.com/auth/apps.groups.settings");
public static void main(final String[] args) throws Exception {
String accessToken = getTokenFromJsonKey();
System.out.println("Token: " + accessToken);
}
private static String getTokenFromJsonKey() throws Exception {
GoogleCredential credential =
GoogleCredential.fromStream(
new FileInputStream(
"<path for json file>"),
new NetHttpTransport(),
GsonFactory.getDefaultInstance());
System.out.println("ServiceAccountId=" + credential.getServiceAccountId());
HttpTransport httpTransport = new NetHttpTransport();
JsonFactory jsonFactory = GsonFactory.getDefaultInstance();
GoogleCredential.Builder builder =
new GoogleCredential.Builder()
.setServiceAccountPrivateKey(credential.getServiceAccountPrivateKey())
.setServiceAccountPrivateKeyId(credential.getServiceAccountPrivateKeyId())
.setServiceAccountId(credential.getServiceAccountId())
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setServiceAccountScopes(API_SCOPES)
.setClock(credential.getClock());
credential = builder.build();
if (!credential.refreshToken()) {
throw new Exception("Failed to fetch access token.");
}
return credential.getAccessToken();
}
}
Membuat aturan
java_binary(
name = "generate_oauth2_token",
srcs = ["GenerateServiceAccountOauth2Token.java"],
main_class = "com.google.tools.GenerateServiceAccountOauth2Token",
deps = [
"//java/com/google/api/client/googleapis/auth/oauth2",
"//java/com/google/api/client/googleapis/javanet",
"//java/com/google/api/client/http",
"//java/com/google/api/client/http/javanet",
"//java/com/google/common/base",
"//java/com/google/common/collect",
"//third_party/java/google_http_java_client:gson",
"//third_party/java/google_http_java_client:json",
],
)
Menguji akun layanan
Coba panggilan Groups API apa pun dengan kredensial akun layanan: membuat grup, menambahkan pengguna, memperbarui setelan grup, dll.
Periksa Log Audit di bagian Laporan Konsol Google Admin. Anda akan melihat akun layanan sebagai pelaku untuk perubahan terkait grup Anda. Lihat artikel Mencatat peristiwa ke dalam log untuk mengetahui informasi selengkapnya.
Atau, Anda dapat menggunakan API untuk mengakses log audit. Untuk memeriksa menggunakan Reports API Explorer, pastikan untuk menggunakan kredensial OAuth admin Anda.
Melakukan autentikasi sebagai akun layanan dengan delegasi tingkat domain
Jika Anda adalah administrator yang mengelola grup identitas, atau jika Anda ingin memberikan akun dengan hak istimewa tingkat domain agar dapat mengelola Google Grup atas nama admin, Anda harus mengautentikasi sebagai akun layanan.
Untuk mengetahui detail tentang cara menyiapkan delegasi tingkat domain, lihat Mengontrol akses API dengan delegasi tingkat domain.
Untuk mengautentikasi sebagai akun layanan, lihat
Menggunakan OAuth 2.0 untuk aplikasi server ke server.
Saat melakukan inisialisasi kredensial dalam kode Anda, tentukan alamat email tempat akun layanan bertindak dengan memanggil with_subject()
pada kredensial.
Contoh:
Python
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES).with_subject(delegated_email)
Membuat instance klien
Contoh berikut menunjukkan cara membuat instance klien menggunakan kredensial akun layanan. Untuk mengautentikasi sebagai pengguna akhir, ganti objek credential
dari akun layanan dengan credential
yang
Anda peroleh sebelumnya di
Menggunakan OAuth 2.0 untuk aplikasi server web.
Python
from google.oauth2 import service_account
import googleapiclient.discovery
SCOPES = ['https://www.googleapis.com/auth/cloud-identity.groups']
SERVICE_ACCOUNT_FILE = '/path/to/service-account-file.json'
def create_service():
credentials = service_account.Credentials.from_service_account_file(
SERVICE_ACCOUNT_FILE, scopes=SCOPES)
delegated_credentials = credentials.with_subject('user@example.org')
service_name = 'cloudidentity'
api_version = 'v1'
service = googleapiclient.discovery.build(
service_name,
api_version,
credentials=delegated_credentials)
return service
Sekarang Anda dapat mulai melakukan panggilan ke Groups API.