Autorizzazione

Le app autorizzano le chiamate all'API del cliente per la registrazione zero-touch tramite OAuth. Questo documento spiega l'autorizzazione dell'API per provider per la gestione della mobilità aziendale (EMM) e sviluppatori IT aziendali. Dopo aver letto questo documento, saprai come autorizzare le richieste API nel tuo app e spiegare i requisiti dell'account agli utenti dell'app.

Guida rapida all'autorizzazione

  • Per configurare un progetto Google Cloud con l'API di registrazione zero-touch e client secret OAuth, esegui questa procedura guidata.
  • Crea il codice campione della guida rapida per Java, .NET o Python. Utilizza le librerie client API di Google per supportare altri lingue diverse.

Panoramica

Rapporto tra dispositivo e risorse del cliente

  1. Uno o più amministratori IT sono utenti in un account cliente con registrazione zero-touch.
  2. Gli amministratori IT utilizzano un Account Google per autenticarsi.
  3. Le richieste API passano un token OAuth2 per autorizzare le richieste API per conto di un amministratore IT.

Account cliente

Le configurazioni, i dispositivi e gli utenti (amministratori IT) di un'organizzazione appartengono a un account cliente. Un account cliente è simile a un gruppo e non è un singolo utente. Un rivenditore configura un cliente quando l'organizzazione acquista per la prima volta dispositivi per la registrazione zero-touch. Gli amministratori IT gestiscono altri utenti in la propria organizzazione usando il portale della registrazione zero-touch.

L'API utilizza gli ID cliente numerici per identificare gli account. Devi passare l'ID cliente come parte del percorso dell'URL quando chiami metodi API. La tua app deve ottenere l'accesso l'ID cliente prima di chiamare qualsiasi metodo API.

L'esempio seguente mostra come ottenere gli account cliente per l'utente che autorizza la chiamata API:

Java

AndroidProvisioningPartner.Customers.List accountRequest = service.customers().list();
accountRequest.setPageSize(100);
CustomerListCustomersResponse accountResponse = accountRequest.execute();

List<Company> customers = accountResponse.getCustomers();
if (customers == null || customers.isEmpty()) {
    // No accounts found for the user. Confirm the Google Account
    // that authorizes the request can access the zero-touch portal.
    System.out.println("No zero-touch enrollment account found.");
} else {
    // Print the customers in this page.
    for (Company customer : customers) {
        System.out.format("%s\tcustomers/%d\n",
              customer.getCompanyName(), customer.getCompanyId());
    }
}

.NET

CustomersResource.ListRequest accountRequest = service.Customers.List();
accountRequest.PageSize = 100;
CustomerListCustomersResponse accountResponse = accountRequest.Execute();
IList<Company> customers = accountResponse.Customers ?? new List<Company>();
if (customers.Count == 0)
{
    // No accounts found for the user. Confirm the Google Account
    // that authorizes the request can access the zero-touch portal.
    Console.WriteLine("No zero-touch enrollment account found.");
}
foreach (Company customer in customers)
{
    Console.WriteLine("{0}\tcustomers/{1}",
                      customer.CompanyName,
                      customer.CompanyId);
}

Python

response = service.customers().list(pageSize=100).execute()
if 'customers' not in response:
  # No accounts found for the user. Confirm the Google Account
  # that authorizes the request can access the zero-touch portal.
  print('No zero-touch enrollment account found.')
  response['customers'] = []

for customer in response['customers']:
  print('{0}\tcustomers/{1}'.format(
      customer['companyName'], customer['companyId']))

Nella tua app dovrai navigare nelle pagine dei risultati dell'account perché l'esempio riportato sopra stampa solo i primi 100 account. Per scoprire come fare, consulta Risultati impaginati.

Un'organizzazione di solito ha un account cliente, ma le organizzazioni più grandi potrebbero utilizzare account cliente separati per ogni reparto. Perché un amministratore IT può essere membro di account cliente diversi, la tua app deve aiutare gli utenti a trovare utilizzare nuovi account cliente. Nell'app, etichetta ogni account cliente utilizzando companyName.

Utenti

Gli amministratori IT autorizzano le richieste API inviate dalla tua app per loro conto. A autorizzare le richieste API, l'utente dell'app dovrà:

  1. Associare un Account Google al proprio indirizzo email.
  2. Unisciti a un account cliente utilizzando lo stesso indirizzo email.
  3. Accettare i Termini di servizio (TdS) del cliente per la registrazione zero-touch.

Per aiutare gli utenti della tua app a eseguire la configurazione, riutilizza le nostre indicazioni per gli amministratori IT in Scaricare ha avviato e Associa un Account Google nella tua documentazione.

Gestione utenti

Gli amministratori IT gestiscono gli utenti per i loro account dei clienti nel gruppo zero-touch portale di registrazione. Gli utenti di un account cliente hanno il ruolo di Proprietario o di Amministratore. Entrambi i ruoli hanno lo stesso accesso all'API del cliente, ma Un Proprietario può gestire altri utenti.

Accettazione dei TdS

Prima che gli utenti della tua app possano autorizzare le chiamate API, devono accettare i TdS più recenti. Questo accade quando gli amministratori IT utilizzano per la prima volta la registrazione zero-touch o quando aggiornare i TdS. Quando un utente non ha accettato i TdS più recenti, l'API restituisce un codice di stato HTTP 403 Forbidden e il corpo della risposta contiene un TosError

Il portale chiede automaticamente agli utenti di accettare i TdS più recenti quando accedono in. Per conoscere gli approcci suggeriti che la tua app potrebbe includere, leggi Gestire i Termini di Service nella guida all'integrazione di EMM.

Aggiungi l'autorizzazione all'app

Ogni richiesta che la tua app invia all'API Customer deve includere un token di autorizzazione. Il token, inoltre, identifica l'applicazione per Google. Poiché l'API del cliente accede ai dati utente, l'autorizzazione deve provenire dal proprietario del e i dati di Google Cloud. L'app delega l'autorizzazione API agli amministratori IT utilizzando OAuth 2.0 del protocollo.

Istruzioni

Forniamo guide rapide per Java, .NET e di Python. Se utilizzi una lingua diversa, segui le due i passaggi riportati di seguito per configurare l'autorizzazione dell'app.

Per scoprire di più sull'autorizzazione, leggi l'articolo Utilizzare OAuth 2.0 per accedere alle API di Google.

Ambiti di autorizzazione

Utilizza l'ambito di autorizzazione API https://www.googleapis.com/auth/androidworkzerotouchemm nella tua app per effettuare una richiesta un token di accesso OAuth 2.0.

Un parametro di ambito controlla l'insieme di risorse e operazioni a cui un token di accesso consente le chiamate. I token di accesso sono validi solo per il set di operazioni e le risorse descritte nell'ambito della richiesta di token. L'API copre tutti gli aspetti i metodi e le risorse con l'ambito della registrazione zero-touch singolo mostrato in alto.

Per un esempio dell'ambito della registrazione zero-touch utilizzato con l'API di Google libreria client, consulta le guide rapide per Java, .NET e Python. Per scoprire di più sull'utilizzo degli ambiti delle API di Google, leggi l'articolo Utilizzo OAuth 2.0 per accedere alle API di Google.

Best practice per le chiavi API

Quando utilizzi le chiavi API nelle tue applicazioni, assicurati di mantenerle al sicuro. L'esposizione pubblica delle credenziali può comportare la compromissione dell'account compromesso, il che potrebbe comportare addebiti imprevisti sul tuo account. Per mantenere le tue chiavi API, segui queste best practice:

Non incorporare le chiavi API direttamente nel codice
Le chiavi API incorporate nel codice possono essere accidentalmente esposte al pubblico, ad esempio se dimentichi di rimuoverle dal codice che condividi. Anziché incorporare le chiavi API nelle applicazioni, archiviale in in variabili di ambiente o in file esterni all'origine dell'applicazione albero di Natale.
Non memorizzare le chiavi API nei file all'interno della struttura di origine dell'applicazione
Se archivi le chiavi API nei file, mantieni i file al di fuori struttura del codice sorgente per assicurarti che le chiavi non finiscano nel controllo del codice sorgente di un sistema operativo completo. Ciò è particolarmente importante se utilizzi un codice sorgente pubblico di un sistema di gestione dei dati come GitHub.
Limitare l'utilizzo delle chiavi API solo agli indirizzi IP, agli URL referrer e alle app mobile che ne hanno bisogno
Limitando gli indirizzi IP, gli URL referrer e le app mobile che possono usare ogni chiave, puoi ridurre l'impatto di una chiave API compromessa. Puoi specificare gli host e le app che possono utilizzare ogni chiave dalla console API di Google aprendo la pagina Credenziali e creando una nuova chiave API con le impostazioni che preferisci oppure modificando le impostazioni di una chiave API.
Elimina le chiavi API non necessarie
Per ridurre al minimo l'esposizione agli attacchi, elimina le chiavi API che non ti servono più.
Rigenera periodicamente le chiavi API
Puoi rigenerare le chiavi API dalla console API di Google aprendo la Pagina Credenziali, selezionando una chiave API e facendo clic su Rigenera. per ogni chiave. Poi aggiorna le applicazioni in modo che utilizzino lo standard chiave. Le chiavi precedenti continueranno a funzionare per 24 ore dopo la generazione chiavi sostitutive.
Rivedi il codice prima di rilasciarlo pubblicamente
Assicurati che il tuo codice non contenga chiavi API o altre chiavi private informazioni prima di rendere disponibile pubblicamente il codice.