Configurazione dell'API Groups
Questa pagina spiega come configurare l'API Cloud Identity Groups.
Prima di iniziare
Enable the Cloud Identity API.
Installazione delle librerie client
Per installare le librerie client, esegui il seguente comando:
Python
Per ulteriori informazioni sulla configurazione dell'ambiente di sviluppo Python, consulta la 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 autenticarti con l'API Groups come utente finale, come amministratore di gruppo di account di servizio 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 utenti che non sono amministratori, consulta l'articolo sull'utilizzo di OAuth 2.0 per applicazioni server web e poi la sezione Eseguire l'inizializzazione 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, completa i passaggi riportati di seguito. Questo metodo di autenticazione deve essere utilizzato quando vuoi che le azioni dell'account di servizio vengano registrate nei log di controllo come account di servizio.
Assegnare un ruolo amministrativo all'account di servizio
Innanzitutto, devi assegnare il ruolo Amministratore gruppo di Google Workspace (Amministratore gruppo) all'account di servizio a cui vuoi delegare, utilizzando l'API Admin SDK Roles and Role Assignments. Questo passaggio consente all'account di servizio di accedere ai gruppi del dominio, ma a nessuna altra risorsa.
Consulta la guida alla gestione dei ruoli per informazioni generali sulla gestione dei ruoli utilizzando l'API Admin SDK. Segui i passaggi riportati di seguito per assegnare il ruolo Amministratore gruppo per il tuo account di servizio.
Nella console Google Cloud, vai alla pagina Account di servizio:
Fai clic sul nome dell'account di servizio che vuoi utilizzare con l'API Groups.
Copia l'ID univoco dell'account di servizio.
Chiama l'API Roles dell'SDK Admin per identificare il valore
roleId
per Group Administrator. Per farlo, puoi utilizzare lo esploratore API nella documentazione dell'SDK Admin.Chiama l'API Role Assignments 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 gruppo. Il secondo passaggio consiste nel completare la procedura di autenticazione OAuth per l'account di servizio.
Se stai sviluppando un'app su Google Cloud e l'account di servizio è un proprietario del progetto, puoi utilizzare le credenziali predefinite dell'applicazione, il che può semplificare la procedura. Per ulteriori informazioni, consulta Autenticazione come account di servizio.
Se l'account di servizio non è il proprietario del progetto, segui le istruzioni riportate di seguito.
In entrambi i casi, l'ambito applicabile per l'API Cloud Identity Groups è
https://www.googleapis.com/auth/cloud-identity.groups
.
Utilizza le credenziali che hai appena creato per generare 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();
Tieni il token di accesso generato.
Codice completo per la generazione di 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();
}
}
Regola di compilazione
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",
],
)
Testare l'account di servizio
Prova qualsiasi chiamata all'API Groups con le credenziali dell'account di servizio: crea un gruppo, aggiungi utenti, aggiorna le impostazioni del gruppo e così via.
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. Per ulteriori informazioni, consulta Log eventi.
In alternativa, puoi utilizzare le API per accedere ai log di controllo. Per eseguire il controllo utilizzando Explorer API per i report, assicurati di utilizzare le tue credenziali OAuth di amministratore.
Autenticazione come account di servizio con delega a livello di dominio
Se sei un amministratore che gestisce i gruppi di identità o se vuoi fornire a un account i privilegi a livello di dominio in modo che possa gestire Google Gruppi per conto degli amministratori, devi autenticarti come account di servizio.
Per informazioni dettagliate sulla configurazione della delega a livello di dominio, consulta Controllare 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 applicazioni da server a server.
Quando esegui l'inizializzazione della credenziale nel codice, specifica l'indirizzo email su cui agisce l'account di servizio 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)
Associazione di un client
L'esempio seguente mostra come creare un'istanza di un client utilizzando le credenziali dell'account di servizio. Per eseguire l'autenticazione come utente finale, sostituisci l'oggetto credential
dell'account di servizio con il credential
ottenuto in precedenza nell'articolo
Utilizzare 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.