승인

앱은 OAuth를 사용하여 제로터치 등록 고객 API 호출을 승인합니다. 이 문서에서는 엔터프라이즈 모바일 관리 (EMM) 제공업체와 엔터프라이즈 IT 개발자를 위한 API 승인에 대해 설명합니다. 이 문서를 읽고 앱에서 API 요청을 승인하는 방법을 알아보고 앱 사용자에게 계정 요구사항을 설명할 수 있습니다.

승인 빠른 시작

  • 제로터치 등록 API 및 OAuth 클라이언트 보안 비밀로 Google Cloud Platform 프로젝트를 설정하려면 이 마법사를 실행하세요.
  • 자바, .NET 또는 Python용 빠른 시작 샘플 코드를 빌드합니다. Google의 API 클라이언트 라이브러리를 사용하여 다른 언어도 지원할 수 있습니다.

개요

기기 및 고객 리소스 관계

  1. 한 명 이상의 IT 관리자가 제로터치 등록 고객 계정의 사용자입니다.
  2. IT 관리자는 Google 계정을 사용하여 자신을 인증합니다.
  3. API 요청은 IT 관리자를 대신하여 API 요청을 승인하는 OAuth2 토큰을 전달합니다.

고객 계정

조직의 구성, 기기, (IT 관리자) 사용자는 고객 계정에 속합니다. 고객 계정은 그룹과 유사하며 개별 사용자가 아닙니다. 리셀러는 조직에서 제로터치 등록을 위해 기기를 처음 구매할 때 고객을 설정합니다. IT 관리자는 제로터치 등록 포털을 사용하여 조직의 다른 사용자를 관리합니다.

API는 숫자로 된 고객 ID를 사용하여 계정을 식별합니다. API 메서드를 호출할 때 URL 경로의 일부로 고객 ID를 전달합니다. 앱에서 API 메서드를 호출하기 전에 사용자의 고객 ID를 가져와야 합니다.

아래 예는 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']))

위 예에서는 처음 100개의 계정만 출력하므로 앱에서는 계정 결과 페이지를 탐색해야 합니다. 방법을 알아보려면 페이징된 결과를 읽어보세요.

일반적으로 조직에는 하나의 고객 계정이 있지만 규모가 큰 조직은 각 부서에 별도의 고객 계정을 사용할 수 있습니다. IT 관리자는 여러 고객 계정의 구성원일 수 있으므로 앱을 통해 사용자가 신규 고객 계정을 찾고 사용할 수 있어야 합니다. 앱에서 companyName 값을 사용하여 각 고객 계정에 라벨을 지정합니다.

사용자

IT 관리자는 앱이 사용자를 대신하여 전송하는 API 요청을 승인합니다. API 요청을 승인하려면 앱 사용자가 다음을 실행해야 합니다.

  1. Google 계정을 이메일 주소와 연결합니다.
  2. 동일한 이메일 주소를 사용하여 고객 계정에 참여합니다.
  3. 제로터치 등록 고객 서비스 약관에 동의합니다.

앱 사용자의 설정을 지원하려면 시작하기Google 계정 연결의 IT 관리자를 위한 안내를 자체 문서에 다시 사용합니다.

사용자 관리

IT 관리자는 제로터치 등록 포털에서 고객 계정의 사용자를 관리합니다. 고객 계정의 사용자에게는 소유자 또는 관리자의 역할이 있습니다. 두 역할 모두 고객 API에 대해 동일한 액세스 권한을 갖지만 소유자는 다른 사용자를 관리할 수 있습니다.

서비스 약관 동의

앱 사용자가 API 호출을 승인하려면 먼저 최신 서비스 약관에 동의해야 합니다. 이러한 상황은 IT 관리자가 제로터치 등록을 처음 사용하거나 Google에서 서비스 약관을 업데이트할 때 발생합니다. 사용자가 최신 서비스 약관에 동의하지 않은 경우 API에서 HTTP 403 Forbidden 상태 코드를 반환하고 응답 본문에 TosError가 포함됩니다.

사용자가 로그인하면 포털에서 최신 서비스 약관에 동의하라는 메시지를 자동으로 표시합니다. 앱에 포함할 수 있는 추천 접근 방식을 보려면 EMM 통합 가이드의 서비스 약관 처리를 읽어보세요.

앱에 승인 추가

앱이 고객 API로 전송하는 모든 요청에는 승인 토큰이 포함되어야 합니다. Google은 이 토큰을 사용하여 애플리케이션을 식별합니다. 고객 API는 사용자 데이터에 액세스하므로 데이터 소유자로부터 승인을 받아야 합니다. 앱에서 OAuth 2.0 프로토콜을 사용하여 API 승인을 IT 관리자에게 위임합니다.

안내

자바, .NET, Python 앱의 빠른 시작 가이드를 제공합니다. 다른 언어를 사용하는 경우 아래 두 단계에 따라 앱 승인을 설정하세요.

승인에 대해 자세히 알아보려면 OAuth 2.0을 사용하여 Google API에 액세스를 참조하세요.

승인 범위

앱에서 API 승인 범위 https://www.googleapis.com/auth/androidworkzerotouchemm을 사용하여 OAuth 2.0 액세스 토큰을 요청합니다.

범위 매개변수는 액세스 토큰에서 호출을 허용하는 리소스 및 작업 집합을 제어합니다. 액세스 토큰은 토큰 요청 범위에 설명된 작업 및 리소스 집합에 대해서만 유효합니다. API는 위에 표시된 단일 제로터치 등록 범위로 모든 메서드와 리소스를 다룹니다.

Google API 클라이언트 라이브러리에서 사용되는 제로터치 등록 범위의 예는 자바, .NET, Python의 빠른 시작을 참고하세요. Google API 범위 사용에 대해 자세히 알아보려면 OAuth 2.0을 사용하여 Google API에 액세스를 읽어보세요.

API 키 권장사항

애플리케이션에서 API 키를 사용할 때는 안전하게 보호해야 합니다. 사용자 인증 정보를 공개적으로 노출하면 계정이 도용되어 계정에 예상치 못한 요금이 부과될 수 있습니다. API 키를 안전하게 보호하려면 다음 권장사항을 따르세요.

코드에 API 키를 직접 삽입하지 않습니다.
공유한 코드에서 키를 삭제하는 것을 잊어버리는 등 코드에 삽입된 API 키가 실수로 일반에 노출될 수 있습니다. API 키를 애플리케이션에 삽입하는 대신 환경 변수에 저장하거나 애플리케이션의 소스 트리 외부에 있는 파일에 저장하세요.
애플리케이션의 소스 트리 안에 있는 파일에 API 키를 저장하지 않습니다.
API 키를 파일에 저장하는 경우 키가 소스 코드 제어 시스템에 포함되지 않도록 파일을 애플리케이션의 소스 트리 외부에 보관하세요. 이는 GitHub 같은 공개 소스 코드 관리 시스템을 사용하는 경우에 특히 중요합니다.
IP 주소, 리퍼러 URL, API 키가 필요한 모바일 앱에서만 API 키를 사용하도록 제한
각 키를 사용할 수 있는 IP 주소, 리퍼러 URL, 모바일 앱을 제한하면 손상된 API 키의 영향을 줄일 수 있습니다. Google API 콘솔사용자 인증 정보 페이지를 열고 원하는 설정으로 새 API 키를 만들거나 API 키의 설정을 수정하여 각 키를 사용할 수 있는 호스트와 앱을 지정할 수 있습니다.
불필요한 API 키 삭제
공격에 노출되는 것을 최소화하려면 더 이상 필요하지 않은 API 키를 삭제합니다.
주기적으로 API 키 재생성
Google API 콘솔에서 사용자 인증 정보 페이지를 열고 API 키를 선택한 후 키마다 키 재생성을 클릭하여 API 키를 다시 생성할 수 있습니다. 그런 다음 새로 생성된 키를 사용하도록 애플리케이션을 업데이트하세요. 이전 키는 교체용 키를 생성한 후에도 24시간 동안 계속 작동합니다.
코드를 공개적으로 출시하기 전에 검토
코드를 공개적으로 제공하기 전에 코드에 API 키 또는 기타 비공개 정보가 포함되지 않았는지 확인합니다.