Autoryzacja

Aplikacje autoryzują wywołania interfejsu API klienta rejestracji typu zero-touch za pomocą OAuth. W tym dokumencie opisano autoryzację interfejsu API dla dostawców usług zarządzania urządzeniami mobilnymi (EMM) i programistów IT dla przedsiębiorstw. Z tego dokumentu dowiesz się, jak autoryzować żądania do interfejsu API w aplikacji i wyjaśniać użytkownikom wymagania dotyczące konta.

Krótkie wprowadzenie do autoryzacji

  • Aby skonfigurować projekt Google Cloud Platform z interfejsem API rejestracji typu zero-touch i tajnymi kluczami klienta OAuth, uruchom ten kreator.
  • Utwórz przykładowy kod krótkiego wprowadzenia dla języka Java, .NET lub Pythona. Użyj bibliotek klienta interfejsu API Google do obsługi innych języków.

Opis

Relacja między urządzeniem a klientem

  1. Co najmniej 1 administrator IT jest użytkownikiem konta klienta korzystającego z rejestracji typu zero-touch.
  2. Administratorzy IT używają konta Google do uwierzytelniania się.
  3. Żądania do interfejsu API przekazują token OAuth2, aby autoryzować żądania do interfejsu API w imieniu administratora IT.

Konta klientów

Konfiguracje, urządzenia i użytkownicy (administrator IT) organizacji należą do konta klienta. Konto klienta przypomina grupę i nie jest użytkownikiem indywidualnym. Sprzedawca konfiguruje klienta, gdy organizacja po raz pierwszy kupuje urządzenia do rejestracji typu zero-touch. Administratorzy IT zarządzają innymi użytkownikami w organizacji za pomocą portalu rejestracji typu zero-touch.

Do identyfikowania kont interfejs API używa numerycznych identyfikatorów klientów. Podczas wywoływania metod interfejsu API przekazujesz identyfikator klienta w ramach ścieżki adresu URL. Przed wywołaniem metod interfejsu API aplikacja musi uzyskać identyfikator klienta użytkownika.

Poniższy przykład pokazuje, jak uzyskać konta klientów dla użytkownika, który autoryzuje wywołanie interfejsu 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']))

W swojej aplikacji musisz poruszać się po stronach wyników wyszukiwania dotyczących konta, ponieważ powyższy przykład wyświetla tylko pierwsze 100 kont. O tym, jak to zrobić, dowiesz się z artykułu Wyniki na strony.

Organizacja zwykle ma 1 konto klienta, ale duże organizacje mogą używać osobnych kont dla każdego oddziału. Administrator IT może należeć do różnych kont klientów, dlatego Twoja aplikacja powinna pomagać użytkownikom w znajdowaniu nowych kont klientów i korzystaniu z nich. W aplikacji oznacz każde konto klienta wartością companyName.

Użytkownicy

Administratorzy IT autoryzują żądania do interfejsu API wysyłane przez aplikację w ich imieniu. Aby autoryzować żądania do interfejsu API, użytkownik aplikacji musi wykonać te czynności:

  1. powiązania konta Google z jego adresem e-mail,
  2. Dołącz do konta klienta przy użyciu tego samego adresu e-mail.
  3. Zaakceptuj Warunki korzystania z usługi rejestracji typu zero-touch dla klienta.

Aby pomóc użytkownikom aplikacji przygotować się, skorzystaj z naszych wskazówek dla administratorów IT z artykułu Pierwsze kroki i powiązywania konta Google w swojej dokumentacji.

Zarządzanie użytkownikami

Administratorzy IT zarządzają użytkownikami kont klientów w portalu rejestracji typu zero-touch. Użytkownicy na koncie klienta mają rolę właściciela lub administratora. Obie role mają taki sam dostęp do interfejsu API klienta, ale właściciel może zarządzać innymi użytkownikami.

Akceptacja Warunków korzystania z usługi

Zanim użytkownicy aplikacji będą mogli autoryzować wywołania interfejsu API, muszą najpierw zaakceptować najnowsze Warunki korzystania z usługi. Dzieje się tak, gdy administratorzy IT po raz pierwszy korzystają z rejestracji typu zero-touch lub gdy aktualizujemy Warunki korzystania z usługi. Jeśli użytkownik nie zaakceptował najnowszych Warunków korzystania z usługi, interfejs API zwraca kod stanu HTTP 403 Forbidden, a treść odpowiedzi zawiera TosError.

Portal automatycznie prosi użytkowników o zaakceptowanie najnowszych Warunków korzystania z usługi, gdy się logują. Aby zobaczyć sugerowane rozwiązania, zapoznaj się z Warunkami korzystania z nicków w przewodniku po integracji EMM.

Dodawanie autoryzacji do aplikacji

Każde żądanie wysyłane przez aplikację do interfejsu API klienta musi zawierać token autoryzacji. Token stanowi też dla Google identyfikator aplikacji. Ponieważ interfejs API klienta ma dostęp do danych użytkownika, autoryzacja musi pochodzić od ich właściciela. Aplikacja deleguje autoryzację interfejsu API administratorom IT przy użyciu protokołu OAuth 2.0.

Instrukcje

Udostępniamy krótkie przewodniki dotyczące aplikacji w językach Java, .NET i Python. Jeśli używasz innego języka, wykonaj te 2 czynności, aby skonfigurować autoryzację aplikacji.

Więcej informacji o autoryzacji znajdziesz w artykule o używaniu OAuth 2.0 do korzystania z interfejsów API Google.

Zakresy autoryzacji

Użyj zakresu autoryzacji interfejsu API https://www.googleapis.com/auth/androidworkzerotouchemm w aplikacji, aby zażądać tokena dostępu OAuth 2.0.

Parametr zakresu steruje zbiorem zasobów i operacji, na które zezwala token dostępu. Tokeny dostępu są ważne tylko dla zbioru operacji i zasobów opisanych w zakresie żądania tokena. Interfejs API obejmuje wszystkie metody i zasoby w pojedynczym zakresie rejestracji typu zero-touch podanym powyżej.

Przykład zakresu rejestracji typu zero-touch używanego z biblioteką klienta interfejsu Google API znajdziesz w krótkich wprowadzeniach do języków Java, .NET i Python. Więcej informacji o używaniu zakresów interfejsów API Google znajdziesz w artykule Uzyskiwanie dostępu do interfejsów API Google przy użyciu protokołu OAuth 2.0.

Sprawdzone metody korzystania z kluczy interfejsu API

Zadbaj o bezpieczeństwo swoich aplikacji, korzystając z kluczy interfejsu API. Publiczne udostępnienie danych logowania może spowodować, że ktoś włamał się na Twoje konto, co może doprowadzić do niespodziewanych opłat. Aby zabezpieczyć klucze interfejsu API, postępuj zgodnie z tymi sprawdzonymi metodami:

Nie umieszczaj kluczy interfejsu API bezpośrednio w kodzie
Klucze interfejsu API umieszczone w kodzie mogą zostać przypadkowo ujawnione publicznie, na przykład jeśli zapomnisz usunąć klucze z udostępnianego kodu. Zamiast umieszczać klucze interfejsu API w aplikacjach, przechowuj je w zmiennych środowiskowych lub w plikach poza drzewem źródłowym aplikacji.
Nie przechowuj kluczy interfejsu API w plikach w drzewie źródłowym aplikacji
Jeśli przechowujesz klucze interfejsu API w plikach, przechowuj te pliki poza drzewem źródłowym aplikacji, aby mieć pewność, że klucze nie znajdą się w systemie kontroli kodu źródłowego. Jest to szczególnie ważne, jeśli używasz publicznego systemu zarządzania kodem źródłowym, takiego jak GitHub.
Ogranicz klucze interfejsu API tylko do tych adresów IP, adresów URL stron odsyłających i aplikacji mobilnych, które ich potrzebują
Ograniczając adresy IP, adresy URL stron odsyłających oraz aplikacje mobilne, które mogą używać poszczególnych kluczy, możesz zmniejszyć wpływ przejętego klucza interfejsu API. Aby określić hosty i aplikacje, które mogą używać poszczególnych kluczy, możesz użyć Konsoli interfejsów API Google. Aby to zrobić, otwórz stronę Dane logowania i utwórz nowy klucz interfejsu API z odpowiednimi ustawieniami lub edytuj ustawienia klucza interfejsu API.
Usuń niepotrzebne klucze interfejsu API
Aby zminimalizować ryzyko ataku, usuń wszystkie klucze interfejsu API, które nie są już potrzebne.
Okresowo ponownie generuj klucze interfejsu API
Klucze interfejsu API możesz wygenerować ponownie w Konsoli interfejsów API Google. Aby to zrobić, otwórz stronę Dane logowania, wybierz klucz interfejsu API i przy każdym kluczu kliknij Wygeneruj klucz ponownie. Następnie zaktualizuj aplikacje, tak aby używały nowo wygenerowanych kluczy. Stare klucze będą działać przez 24 godziny po wygenerowaniu kluczy zastępczych.
Sprawdź kod przed jego publicznym udostępnieniem
Zanim udostępnisz kod publicznie, upewnij się, że nie zawiera on kluczy interfejsu API ani żadnych innych informacji prywatnych.