Autorização

Os apps autorizam chamadas para a API de registro sem toque para clientes usando o OAuth. Este documento explica a autorização da API para provedores de gerenciamento de mobilidade empresarial (EMM) e desenvolvedores de TI. Depois de ler este documento, você saberá como autorizar solicitações de API em seu do app e explicar os requisitos da conta aos usuários dele.

Guia de início rápido de autorização

  • Para configurar um projeto do Google Cloud Platform com a API de registro sem toque e chaves secretas do cliente OAuth, execute este assistente.
  • Crie o código de amostra do guia de início rápido para Java, .NET ou Python. Use as bibliotecas de cliente das APIs do Google para dar suporte a outros idiomas.

Visão geral

Relação entre recursos do dispositivo e do cliente

  1. Um ou mais administradores de TI são usuários em uma conta de cliente com registro sem toque.
  2. Os administradores de TI usam uma Conta do Google para se autenticarem.
  3. As solicitações de API passam um token OAuth2 para autorizar solicitações de API em nome de um Administrador de TI.

Contas de clientes

As configurações, os dispositivos e os usuários (administrador de TI) de uma organização pertencem a conta de cliente. Uma conta de cliente é semelhante a um grupo e não é uma para um usuário individual. Um revendedor configura um cliente quando a organização compra dispositivos para o registro sem toque pela primeira vez. Os administradores de TI gerenciam outros usuários na organização usando o portal de registro sem toque.

A API usa IDs de cliente numéricos para identificar contas. Você transmite o ID de cliente como parte do caminho do URL ao chamar os métodos da API. Seu app precisa da ID de cliente antes de chamar qualquer método de API.

O exemplo abaixo mostra como conseguir as contas de cliente para o usuário que autoriza a chamada de 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']))

No seu aplicativo, você precisará navegar nas páginas de resultados da conta porque o acima apenas imprime as primeiras 100 contas. Para aprender a fazer isso, leia Resultados paginados.

Uma organização normalmente tem uma conta de cliente, mas organizações maiores podem usar contas de cliente separadas para cada divisão. Como um administrador de TI pode ser membro de diferentes contas de clientes, seu aplicativo deve ajudar os usuários a encontrar e usar novas contas de clientes. No app, rotule cada conta de cliente usando o valor companyName.

Usuários

Os administradores de TI autorizam as solicitações de API que seu app envia em nome deles. Para autorizar solicitações de API, o usuário do seu app precisa fazer o seguinte:

  1. Associe uma Conta do Google ao seu endereço de e-mail.
  2. Participe de uma conta de cliente usando o mesmo endereço de e-mail.
  3. Aceite os Termos de Serviço (ToS) do cliente para o registro sem toque.

Para ajudar os usuários do seu app a fazer a configuração, reutilize nossas orientações para administradores de TI em Acessar iniciado e Associar uma Conta do Google na sua própria documentação.

Gerenciamento de usuários

Os administradores de TI gerenciam os usuários das contas dos clientes no registro sem toque. portal de inscrição. Os usuários em uma conta de cliente têm uma função Proprietário ou Administrador. Ambas as funções têm o mesmo acesso à API do cliente, mas um proprietário pode gerenciar outros usuários.

Aceitação dos TOS

Antes de autorizarem as chamadas de API, os usuários do app precisam aceitar os Termos de Serviço mais recentes. Isso acontece quando os administradores de TI usam o registro sem toque pela primeira vez atualizar os TOS. Quando um usuário não aceita os TOS mais recentes, a API retorna um O código de status HTTP 403 Forbidden e o corpo da resposta contêm uma TosError.

O portal solicita automaticamente que os usuários aceitem os Termos de Serviço mais recentes ao fazerem login. Para conferir as abordagens sugeridas que seu app pode incluir, leia Lidar com os Termos de Service no guia de integração de EMM.

Adicionar autorização ao seu app

Toda solicitação que o app envia para a API do cliente precisa incluir uma autorização com base no token correto anterior. O token também identifica o aplicativo para o Google. Como o a API do cliente acessar os dados do usuário, a autorização deve vir do proprietário do dados. O app delega a autorização da API a administradores de TI usando o OAuth 2.0 protocolo.

Instruções

Fornecemos guias de início rápido para Java, .NET e Apps Python. Se você estiver usando um idioma diferente, siga as duas etapas abaixo para configurar a autorização do app.

Para saber mais sobre autorização, leia Como usar o OAuth 2.0 para acessar o Google APIs do Google.

Escopos de autorização

Use o escopo de autorização da API https://www.googleapis.com/auth/androidworkzerotouchemm no seu app para solicitar um token de acesso do OAuth 2.0.

Um parâmetro de escopo controla o conjunto de recursos e operações com os quais que o token permite chamadas. Os tokens de acesso são válidos apenas para o conjunto de operações e os recursos descritos no escopo da solicitação de token. A API abrange todos os métodos e recursos com o escopo único do registro sem toque mostrado acima.

Um exemplo do escopo do registro sem toque usado com a API do Google do Firebase, consulte os guias de início rápido para Java, .NET e Python. Para saber mais sobre o uso de escopos da API do Google, leia Usar OAuth 2.0 para acessar as APIs do Google

Práticas recomendadas para chaves de API

Ao usar as chaves de API nos aplicativos, tome cuidado para mantê-las em segurança. A exposição pública de suas credenciais pode fazer com que sua conta seja pode resultar em cobranças inesperadas na sua conta. Para manter as chaves de API, siga estas práticas recomendadas:

Não incorpore chaves de API diretamente no código
As chaves de API incorporadas no código podem ser expostas acidentalmente ao público, por exemplo, se você se esquecer de remover as chaves do código compartilhar. Em vez de incorporá-las nos aplicativos, armazene-as variáveis de ambiente ou em arquivos fora da fonte árvore.
Não armazene chaves de API em arquivos dentro da árvore de origem do seu aplicativo
Se você armazenar chaves de API em arquivos, mantenha-os fora do ambiente árvore de origem para ajudar a garantir que suas chaves não acabem no controle do código-fonte sistema. Isso é importante principalmente se você usa um código-fonte público de código aberto, como o GitHub.
Restrinja o uso das suas chaves de API aos endereços IP, URLs referenciadores e os apps para dispositivos móveis que precisam delas
Restringindo os endereços IP, URLs referenciadores e apps para dispositivos móveis que podem usar cada chave, você poderá reduzir o impacto de uma chave de API comprometida. Você pode especificar os hosts e aplicativos que podem usar cada chave no Console de APIs do Google; abra a página Credenciais e depois crie uma nova API chave com as configurações que quiser ou editar as configurações de uma API de dados.
Excluir chaves de API desnecessárias
Para minimizar a exposição a ataques, exclua as chaves de API que não são mais necessárias.
Gere novamente as chaves de API periodicamente
Para regenerar chaves de API no Console do Google API, abra a página Credenciais, selecione uma chave de API e clique em Gerar chave novamente para cada uma delas. Em seguida, atualize seus aplicativos para usar o modelo chaves. As chaves antigas vão continuar funcionando por 24 horas após a geração de chaves de substituição.
Revise o código antes de liberá-lo publicamente
Verifique se o código não contém chaves de API ou qualquer outra informação particular antes de disponibilizar o código ao público.