Configurazione dell'API Groups

In questa pagina viene spiegato come configurare l'API Cloud Identity Groups.

Prima di iniziare

Enable the Cloud Identity API.

Enable the API

Installazione delle librerie client

Per installare le librerie client, esegui questo comando:

Python

Per ulteriori informazioni sulla configurazione dell'ambiente di sviluppo Python, consulta Guida alla configurazione dell'ambiente di sviluppo Python.

pip install --upgrade google-api-python-client google-auth \
  google-auth-oauthlib google-auth-httplib2

Autenticazione con l'API Groups

Puoi eseguire l'autenticazione con l'API Groups come utente finale o come servizio amministratore del gruppo di account senza delega a livello di dominio o come account di servizio con delega a livello di dominio. Le sezioni seguenti descrivono ciascun metodo.

Autenticazione come utente finale

Se non sei un amministratore o stai creando un'app che agisce per conto di Per gli utenti che non sono amministratori, vedi Con OAuth 2.0 per applicazioni server web, quindi consulta la sezione Creazione di un'istanza di un client di seguito.

Autenticazione come account di servizio senza delega a livello di dominio

Se utilizzi un account di servizio e vuoi utilizzarlo per gestire i gruppi come amministratore del gruppo, completa i passaggi seguenti. Devi usare questo metodo di autenticazione quando vuoi che le azioni dell'account di servizio siano registrate negli audit log. come account di servizio.

Assegnazione di un ruolo di amministratore all'account di servizio

Innanzitutto, devi assegnare il ruolo Amministratore di gruppo di Google Workspace amministratore) all'account di servizio a cui vuoi delegare gli account, utilizzando SDK Roles e Role Attribution. Questo passaggio concede all'account di servizio l'accesso ai gruppi del dominio, ma nessun'altra risorsa.

Consulta le Guida alla gestione dei ruoli per informazioni generali sulla gestione dei ruoli con l'API SDK Admin. Segui Segui i passaggi riportati di seguito per assegnare il ruolo Amministratore dei gruppi per il tuo account di servizio.

  1. Nella console Google Cloud, vai alla pagina Account di servizio:

    Vai a Service account

  2. Fai clic sul nome dell'account di servizio che vuoi utilizzare con API Groups.

  3. Copia l'ID univoco dell'account di servizio.

  4. Chiama l'API Admin SDK Roles per identificare roleId per il gruppo Amministratore. Puoi utilizzare lo Explorer API nella documentazione di SDK Admin.

  5. Chiama il API Role Attribution con il seguente corpo della richiesta:

    {
      "assignedTo": "SERVICE_ACCOUNT_UNIQUE_ID"
      "roleId": "ROLE_ID"
      "scopeType": "CUSTOMER"
      "kind": "admin#directory#roleAssignment"
    }
    

Autenticazione e autorizzazione dell'account di servizio

Ora hai un account di servizio con il ruolo Amministratore dei gruppi. Il secondo passaggio consiste nel completare il processo di autenticazione OAuth per l'account di servizio.

  • Se stai sviluppando un'app su Google Cloud e l'account di servizio sia un proprietario del progetto, puoi usare le credenziali predefinite dell'applicazione il che può semplificare il processo. Consulta: Autenticazione come account di servizio per ulteriori informazioni.

  • Se l'account di servizio non è il proprietario del progetto, segui le istruzioni di seguito.

In entrambi i casi, l'ambito applicabile per l'API Cloud Identity Groups è https://www.googleapis.com/auth/cloud-identity.groups.

  1. Utilizzando la credenziale appena creata, genera un token di accesso.

    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();
    

    Conserva il token di accesso generato.

Codice completo per generare un token di accesso per un account di servizio

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

Crea regola

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",
  ],
)

Test dell'account di servizio

  1. Prova una chiamata API Groups con il servizio credenziali dell'account: creare un gruppo, aggiungere utenti, aggiornare le impostazioni del gruppo e così via.

  2. Controlla i log di controllo nella sezione Report della Console di amministrazione Google. Dovresti vedere l'account di servizio come attore delle modifiche relative al gruppo. Consulta: Registra eventi per ulteriori informazioni informazioni.

    In alternativa, puoi utilizzare le API per accedere agli audit log. Per verificare utilizzando il Explorer API di reporting assicurati di utilizzare le tue credenziali OAuth amministratore.

Autenticazione come account di servizio con delega a livello di dominio

Se sei un amministratore che gestisce gruppi di identità o se vuoi fornire un account con privilegi a livello di dominio per poter gestire Google Gruppi amministratori, devi autenticarti come account di servizio.

Per maggiori dettagli sulla configurazione della delega a livello di dominio, vedi Controlla l'accesso all'API con la delega a livello di dominio.

Per eseguire l'autenticazione come account di servizio, consulta Utilizzo di OAuth 2.0 per le applicazioni server-server. Quando si inizializza la credenziale nel codice, specifica l'indirizzo e-mail su che l'account di servizio agisce chiamando with_subject() sulla credenziale. Ad esempio:

Python

credentials = service_account.Credentials.from_service_account_file(
  SERVICE_ACCOUNT_FILE, scopes=SCOPES).with_subject(delegated_email)

Creare un'istanza per un client

L'esempio seguente mostra come creare un'istanza di un cliente utilizzando un account di servizio e credenziali. Per eseguire l'autenticazione come utente finale, sostituisci credential l'oggetto dall'account di servizio con il credential ottenuti in precedenza Utilizzo di OAuth 2.0 per applicazioni 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

Ora puoi iniziare a effettuare chiamate all'API Groups.