Autorisierung

Apps autorisieren Aufrufe der Kunden-API für die Zero-Touch-Registrierung mit OAuth. In diesem Dokument wird die API-Autorisierung für EMM-Anbietern (Enterprise Mobility Management) und IT-Entwicklern von Unternehmen. Nachdem Sie dieses Dokument gelesen haben, wissen Sie, wie Sie API-Anfragen in Ihrem App und erklären Sie den Nutzern der App die Kontoanforderungen.

Kurzanleitung zur Autorisierung

  • Wenn Sie ein Google Cloud-Projekt mit der Zero-Touch-Registrierungs-API und OAuth-Clientgeheimnissen einrichten möchten, führen Sie diesen Assistenten aus.
  • Erstellen Sie den Beispielcode der Kurzanleitung für Java, .NET oder Python Verwenden Sie die API-Clientbibliotheken von Google für die Unterstützung anderer Sprachen.

Übersicht

Beziehung zwischen Gerät und Kundenressource

  1. Mindestens ein IT-Administrator ist Nutzer in einem Kundenkonto mit Zero-Touch-Registrierung.
  2. IT-Administratoren verwenden ein Google-Konto zur Authentifizierung.
  3. API-Anfragen übergeben ein OAuth2-Token, um API-Anfragen im Namen eines IT-Administrator.

Kundenkonten

Die Konfigurationen, Geräte und (IT-Administrator-)Nutzer einer Organisation gehören zu einem Kundenkonto. Ein Kundenkonto ähnelt einer Gruppe und ist keine einzelner Nutzer. Ein Reseller richtet einen Kunden ein, wenn die Organisation das erste Mal einen Kunden hat. Geräte für die Zero-Touch-Registrierung kauft. IT-Administratoren verwalten andere Nutzer in über das Portal für die Zero-Touch-Registrierung in ihrem Unternehmen.

Die API verwendet numerische Kundennummern, um Konten zu identifizieren. Sie übergeben die Kundennummer als Teil des URL-Pfads enthalten, wenn API-Methoden aufgerufen werden. Deine App muss die Kundennummer eines Nutzers abrufen, bevor API-Methoden aufgerufen werden.

Im folgenden Beispiel sehen Sie, wie Sie die Kundenkonten des Nutzers abrufen, der autorisiert den API-Aufruf:

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']))

In Ihrer App müssen Sie auf den Ergebnisseiten des Kontos navigieren, da die Im Beispiel oben werden nur die ersten 100 Konten gedruckt. Weitere Informationen dazu finden Sie unter Seitenergebnisse:

Eine Organisation hat normalerweise ein Kundenkonto, aber größere Organisationen separate Kundenkonten für jede Abteilung verwenden. IT-Administratoren können Mitglied verschiedener Kundenkonten ist, sollte Ihre App den Nutzern helfen, Sie verwenden neue Kundenkonten. Fügen Sie in Ihrer App jedem Kundenkonto mithilfe der companyName-Wert.

Nutzer

IT-Administratoren autorisieren die API-Anfragen, die Ihre App in ihrem Namen sendet. Bis API-Anfragen autorisieren, müssen die Nutzer Ihrer App Folgendes tun:

  1. Er kann ein Google-Konto mit seiner E-Mail-Adresse verknüpfen.
  2. Einem Kundenkonto mit derselben E-Mail-Adresse beitreten
  3. Akzeptieren Sie die Nutzungsbedingungen für die Zero-Touch-Registrierung.

Um die Nutzer Ihrer App bei der Einrichtung zu unterstützen, verwenden Sie unsere Anleitung für IT-Administratoren unter gestartet und Google-Konto verknüpfen in Ihrer eigenen Dokumentation.

Nutzerverwaltung

IT-Administratoren verwalten die Nutzer ihrer Kundenkonten in der Zero-Touch-Registrierung. Registrierungsportal. Nutzer in einem Kundenkonto haben entweder eine Rolle, die entweder Inhaber oder Administrator. Beide Rollen haben denselben Zugriff auf die Customer API, aber ein Inhaber kann andere Nutzer verwalten.

Annahme der Nutzungsbedingungen

Bevor die Nutzer Ihrer App API-Aufrufe autorisieren können, müssen sie die aktuelle Nutzungsbedingungen Das ist der Fall, wenn IT-Administratoren die Zero-Touch-Registrierung zum ersten Mal verwenden die Nutzungsbedingungen zu aktualisieren. Wenn ein Nutzer die aktuellen Nutzungsbedingungen nicht akzeptiert hat, gibt die API eine HTTP-Statuscode 403 Forbidden und der Antworttext enthält TosError

Beim Anmelden werden Nutzer im Portal automatisch aufgefordert, die aktuellen Nutzungsbedingungen zu akzeptieren. Vorschläge für Ansätze, die deine App beinhalten könnte, findest du in den Nutzungsbedingungen des Service im Integrationsleitfaden für EMM.

Autorisierung zur App hinzufügen

Jede Anfrage, die Ihre App an die Kunden-API sendet, muss eine Autorisierung enthalten Token. Anhand dieses Tokens wird deine Anwendung Google gegenüber identifiziert. Da die Kunden-API auf Nutzerdaten zugreift, muss die Autorisierung vom Inhaber der Daten. Ihre App delegiert die API-Autorisierung mithilfe von OAuth 2.0 an IT-Administratoren Protokoll.

Anleitung

Wir stellen Kurzanleitungen für Java, .NET und Python-Anwendungen Wenn Sie eine andere Sprache verwenden, folgen Sie den beiden Schritten unten, um die Autorisierung für Ihre App einzurichten.

Weitere Informationen zur Autorisierung finden Sie unter OAuth 2.0 für den Zugriff auf Google verwenden APIs

Autorisierungsbereiche

API-Autorisierungsbereich verwenden https://www.googleapis.com/auth/androidworkzerotouchemm in deiner App, um sie anzufordern ein OAuth 2.0-Zugriffstoken.

Ein Bereichsparameter steuert die Ressourcen und Vorgänge, auf die ein Zugriff Token erlaubt Aufrufe an. Zugriffstokens sind nur für diese Gruppe von Vorgängen gültig und Ressourcen, die im Bereich der Tokenanfrage beschrieben sind. Die API deckt alle Methoden und Ressourcen mit dem einzelnen Bereich der Zero-Touch-Registrierung oben.

Ein Beispiel für den Umfang der Anmeldung ohne Einrichtung, der mit der Google API-Clientbibliothek verwendet wird, finden Sie in den Kurzanleitungen für Java, .NET und Python. Weitere Informationen zur Verwendung von Google API-Bereichen finden Sie unter Verwenden von OAuth 2.0 für den Zugriff auf Google APIs

Best Practices für API-Schlüssel

Wenn Sie API-Schlüssel in Ihren Anwendungen verwenden, achten Sie auf deren Sicherheit. Wenn Sie Ihre Anmeldedaten öffentlich preisgeben, kann Ihr Konto Dies kann zu unerwarteten Belastungen Ihres Kontos führen. Beibehalten sollten Sie die folgenden Best Practices beachten:

API-Schlüssel nicht direkt in Code einbetten
In Code eingebettete API-Schlüssel können versehentlich dem öffentlich zugänglich sein, z. B. wenn Sie vergessen, die Schlüssel aus Code zu entfernen, Teilen. Anstatt Ihre API-Schlüssel in Ihre Anwendungen einzubetten, sollten Sie sie in Umgebungsvariablen oder in Dateien außerhalb der Quelle Ihrer Anwendung Baum.
API-Schlüssel nicht in Dateien in der Quellstruktur der Anwendung speichern
Wenn Sie API-Schlüssel in Dateien speichern, sollten Sie diese außerhalb der Quellstruktur, um sicherzustellen, dass Ihre Schlüssel nicht in der Quellcodesteuerung landen System. Das ist besonders wichtig, wenn Sie ein öffentliches Quellcode-Verwaltungssystem wie GitHub verwenden.
Beschränken Sie die Verwendung Ihrer API-Schlüssel auf IP-Adressen, Verweis-URLs, und mobilen Apps
Durch die Einschränkung von IP-Adressen, Verweis-URLs und mobilen Apps, die verwenden, können Sie die Auswirkungen eines manipulierten API-Schlüssels reduzieren. Sie können Geben Sie die Hosts und Anwendungen an, die die einzelnen Schlüssel aus der Google API Console verwenden können indem Sie die Seite „Anmeldedaten“ öffnen und entweder eine neue API erstellen Schlüssel durch die gewünschten Einstellungen oder durch Bearbeiten der Einstellungen einer API .
Nicht benötigte API-Schlüssel löschen
Löschen Sie alle API-Schlüssel, die Sie nicht verwenden, um das Angriffsrisiko zu minimieren die Sie länger brauchen.
API-Schlüssel regelmäßig neu generieren
Sie können API-Schlüssel über die Google API Console neu generieren. Öffnen Sie dazu die Seite „Anmeldedaten“, wählen Sie einen API-Schlüssel aus und klicken Sie auf Neu generieren key für jeden Schlüssel. Aktualisieren Sie dann Ihre Anwendungen, um die neu generierte Schlüssel. Ihre alten Schlüssel funktionieren nach der Generierung noch 24 Stunden lang. Ersatzschlüssel.
Code vor der Veröffentlichung überprüfen
Ihr Code darf keine API-Schlüssel oder andere private Schlüssel enthalten bevor Sie Ihren Code öffentlich verfügbar machen.