Авторизация

Приложения авторизуют вызовы клиентского API автоматической регистрации с помощью OAuth . В этом документе объясняется авторизация API для поставщиков управления мобильностью предприятия (EMM) и корпоративных ИТ-разработчиков. Прочитав этот документ, вы узнаете, как авторизовать запросы API в вашем приложении, и объясните требования к учетной записи пользователям вашего приложения.

Краткое руководство по авторизации

  • Чтобы настроить проект Google Cloud Platform с API автоматической регистрации и секретами клиента OAuth, запустите этот мастер .
  • Создайте пример кода быстрого запуска для Java , .NET или Python . Используйте клиентские библиотеки API Google для поддержки других языков.

Обзор

Взаимоотношения устройств и ресурсов клиента

  1. Один или несколько ИТ-администраторов являются пользователями учетной записи клиента с автоматической регистрацией.
  2. ИТ-администраторы используют учетную запись Google для аутентификации.
  3. Запросы API передают токен OAuth2 для авторизации запросов API от имени ИТ-администратора.

Счета клиентов

Конфигурации, устройства и пользователи (ИТ-администраторы) организации принадлежат учетной записи клиента. Учетная запись клиента аналогична группе и не является отдельным пользователем. Реселлер настраивает клиента, когда организация впервые приобретает устройства для автоматической регистрации. ИТ-администраторы управляют другими пользователями в своей организации с помощью портала автоматической регистрации.

API использует числовые идентификаторы клиентов для идентификации учетных записей. Вы передаете идентификатор клиента как часть URL-пути при вызове методов API. Вашему приложению необходимо получить идентификатор клиента пользователя перед вызовом каких-либо методов API.

В приведенном ниже примере показано, как получить учетные записи клиентов для пользователя, который авторизует вызов API:

Ява

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

.СЕТЬ

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

Питон

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

В вашем приложении вам нужно будет перемещаться по страницам результатов по учетным записям, поскольку в приведенном выше примере печатаются только первые 100 учетных записей. Чтобы узнать, как это сделать, прочтите «Постраничные результаты» .

У организации обычно есть одна учетная запись клиента, но более крупные организации могут использовать отдельные учетные записи клиентов для каждого подразделения. Поскольку ИТ-администратор может быть участником разных учетных записей клиентов, ваше приложение должно помогать пользователям находить и использовать новые учетные записи клиентов. В своем приложении пометьте каждую учетную запись клиента, используя значение companyName .

Пользователи

ИТ-администраторы разрешают запросы API, которые ваше приложение отправляет от их имени. Чтобы авторизовать запросы API, пользователю вашего приложения необходимо сделать следующее:

  1. Свяжите учетную запись Google с их адресом электронной почты.
  2. Присоединитесь к учетной записи клиента, используя тот же адрес электронной почты.
  3. Примите условия обслуживания клиента с автоматической регистрацией.

Чтобы помочь пользователям вашего приложения настроить его, воспользуйтесь нашим руководством для ИТ-администраторов в разделе «Начало работы и связывание учетной записи Google» в собственной документации.

Управление пользователями

ИТ-администраторы управляют пользователями их учетных записей клиентов на портале автоматической регистрации. Пользователи в учетной записи клиента имеют роль владельца или администратора . Обе роли имеют одинаковый доступ к клиентскому API, но владелец может управлять другими пользователями.

Принятие условий обслуживания

Прежде чем пользователи вашего приложения смогут авторизовать вызовы API, им необходимо принять последнюю версию Условий обслуживания. Это происходит, когда ИТ-администраторы впервые используют автоматическую регистрацию или когда мы обновляем Условия обслуживания. Если пользователь не принял последние Условия обслуживания, API возвращает код состояния HTTP 403 Forbidden , а тело ответа содержит TosError .

Портал автоматически предлагает пользователям принять последнюю версию Условий обслуживания при входе в систему. Чтобы просмотреть предлагаемые подходы, которые может включать ваше приложение, прочтите Условия использования Handle в руководстве по интеграции EMM.

Добавьте авторизацию в свое приложение

Каждый запрос, который ваше приложение отправляет в клиентский API, должен включать токен авторизации. Токен также идентифицирует ваше приложение для Google. Поскольку клиентский API получает доступ к пользовательским данным, авторизация должна исходить от владельца данных. Ваше приложение делегирует авторизацию API ИТ-администраторам с помощью протокола OAuth 2.0 .

Инструкции

Мы предоставляем краткие руководства для приложений Java , .NET и Python . Если вы используете другой язык, выполните два шага ниже, чтобы настроить авторизацию для вашего приложения.

Подробнее об авторизации читайте в статье Использование OAuth 2.0 для доступа к API Google .

Области авторизации

Используйте область авторизации API https://www.googleapis.com/auth/androidworkzerotouchemm в своем приложении, чтобы запросить токен доступа OAuth 2.0.

Параметр области управляет набором ресурсов и операций, вызовы которых разрешены маркером доступа. Токены доступа действительны только для набора операций и ресурсов, описанных в области запроса токена. API охватывает все методы и ресурсы с единой областью автоматической регистрации, показанной выше.

Пример области автоматической регистрации, используемой с клиентской библиотекой API Google, см. в кратких руководствах по Java , .NET и Python . Дополнительные сведения об использовании областей API Google см. в статье Использование OAuth 2.0 для доступа к API Google .

Рекомендации по использованию ключей API

Когда вы используете ключи API в своих приложениях, позаботьтесь о их безопасности. Публичное раскрытие ваших учетных данных может привести к компрометации вашей учетной записи, что может привести к неожиданным списаниям средств с вашей учетной записи. Чтобы обеспечить безопасность ключей API, следуйте этим рекомендациям:

Не встраивайте ключи API непосредственно в код.
Ключи API, встроенные в код, могут случайно стать общедоступными, например, если вы забудете удалить ключи из кода, которым вы делитесь. Вместо того, чтобы встраивать ключи API в свои приложения, храните их в переменных среды или в файлах за пределами дерева исходного кода вашего приложения.
Не храните ключи API в файлах внутри исходного дерева вашего приложения.
Если вы храните ключи API в файлах, храните файлы вне дерева исходного кода вашего приложения, чтобы гарантировать, что ваши ключи не попадут в вашу систему контроля исходного кода. Это особенно важно, если вы используете общедоступную систему управления исходным кодом, такую ​​как GitHub.
Ограничьте использование ключей API только теми IP-адресами, URL-адресами рефереров и мобильными приложениями, которым они нужны.
Ограничив IP-адреса, URL-адреса рефереров и мобильные приложения, которые могут использовать каждый ключ, вы можете уменьшить влияние скомпрометированного ключа API. Вы можете указать хосты и приложения, которые могут использовать каждый ключ, из консоли Google API , открыв страницу «Учетные данные» , а затем либо создав новый ключ API с нужными настройками, либо отредактировав настройки ключа API.
Удалите ненужные ключи API
Чтобы минимизировать риск атак, удалите все ключи API, которые вам больше не нужны.
Периодически обновляйте ключи API.
Вы можете восстановить ключи API из консоли Google API , открыв страницу «Учетные данные» , выбрав ключ API и нажав «Регенерировать ключ» для каждого ключа. Затем обновите свои приложения, чтобы использовать вновь сгенерированные ключи. Ваши старые ключи будут работать в течение 24 часов после создания заменяющих ключей.
Проверьте свой код, прежде чем публиковать его публично.
Прежде чем опубликовать свой код, убедитесь, что ваш код не содержит ключей API или какой-либо другой конфиденциальной информации.