Yetkilendirme

Uygulamalar, el değmeden kayıt müşteri API'sine yapılan çağrıları OAuth kullanarak yetkilendirir. Bu belgede, API'nin kurumsal mobilite yönetimi (EMM) sağlayıcıları ve kurumsal BT geliştiricileri için yetkilendirmesi açıklanmaktadır. Bu belgeyi okuduktan sonra, uygulamanızdaki API isteklerini nasıl yetkilendireceğinizi ve hesap şartlarını uygulamanızın kullanıcılarına nasıl açıklayacağınızı öğreneceksiniz.

Yetkilendirme hızlı başlangıç kılavuzu

  • El değmeden kayıt API'si ve OAuth istemci gizli anahtarları ile bir Google Cloud Platform projesi oluşturmak için bu sihirbazı çalıştırın.
  • Java, .NET veya Python için hızlı başlangıç örnek kodu oluşturun. Diğer dilleri desteklemek için Google'ın API istemci kitaplıklarını kullanın.

Genel bakış

Cihaz ve müşteri kaynağı ilişkisi

  1. Bir veya daha fazla BT yöneticisi, el değmeden kayıt müşteri hesabındaki kullanıcılardır.
  2. BT yöneticileri kendi kimliklerini doğrulamak için Google Hesabı kullanır.
  3. API istekleri, API isteklerini BT yöneticisi adına yetkilendirmek için OAuth2 jetonu iletir.

Müşteri hesapları

Bir kuruluşun yapılandırmaları, cihazları ve (BT yöneticisi) kullanıcıları bir müşteri hesabına aittir. Müşteri hesabı, gruplara benzer ve bireysel bir kullanıcı değildir. Kuruluş el değmeden kayıt için ilk kez cihaz satın aldığında, bayi müşteri ayarlarını yapar. BT yöneticileri el değmeden kayıt portalını kullanarak kuruluşlarındaki diğer kullanıcıları yönetir.

API, hesapları tanımlamak için sayısal müşteri kimlikleri kullanır. API yöntemlerini çağırırken müşteri kimliğini URL yolunun bir parçası olarak geçirirsiniz. Uygulamanızın herhangi bir API yöntemini çağırmadan önce kullanıcının müşteri kimliğini alması gerekir.

Aşağıdaki örnekte, API çağrısını yetkilendiren kullanıcının müşteri hesaplarının nasıl alınacağı gösterilmektedir:

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

Yukarıdaki örnek yalnızca ilk 100 hesabı yazdırdığından, uygulamanızda hesap sonucu sayfalarında gitmeniz gerekir. Bunu nasıl yapacağınızı öğrenmek için Sayfalı sonuçlar bölümünü okuyun.

Bir kuruluş genellikle tek bir müşteri hesabına sahiptir, ancak daha büyük kuruluşlar her bölüm için ayrı müşteri hesapları kullanabilir. BT yöneticisi farklı müşteri hesaplarının üyesi olabileceğinden uygulamanız, kullanıcıların yeni müşteri hesapları bulmasına ve kullanmasına yardımcı olmalıdır. Uygulamanızda, her müşteri hesabını companyName değerini kullanarak etiketleyin.

Kullanıcılar

BT yöneticileri, uygulamanızın kendi adlarına gönderdiği API isteklerini yetkilendirir. Uygulamanızın kullanıcısının API isteklerini yetkilendirmesi için aşağıdakileri yapması gerekir:

  1. Bir Google Hesabını kullanıcının e-posta adresiyle ilişkilendirmelidir.
  2. Aynı e-posta adresini kullanarak bir müşteri hesabına katılabilirsiniz.
  3. El değmeden kayıt ile ilgili müşteri Hizmet Şartları'nı (ToS) kabul edin.

Uygulamanızın kullanıcılarının kurulumuna yardımcı olmak için Başlayın ve Google Hesabı ilişkilendirme bölümündeki BT yöneticilerine yönelik kılavuzumuzu kendi dokümanlarınızda tekrar kullanın.

Kullanıcı yönetimi

BT yöneticileri, el değmeden kayıt portalında müşteri hesapları için kullanıcıları yönetir. Müşteri hesabındaki kullanıcılar Sahip veya Yönetici rolüne sahiptir. Her iki rol de müşteri API'sine aynı erişime sahiptir ancak Sahip diğer kullanıcıları yönetebilir.

Hizmet Şartları'nın kabulü

Uygulamanızın kullanıcılarının API çağrılarını yetkilendirebilmesi için önce en güncel Hizmet Şartları'nı kabul etmeleri gerekir. Bu durum, BT yöneticileri el değmeden kayıt özelliğini ilk kez kullandığında veya Hizmet Şartları'nı güncellediğimizde meydana gelir. Bir kullanıcı en son Hizmet Şartları'nı kabul etmediğinde API bir HTTP 403 Forbidden durum kodu döndürür ve yanıt gövdesinde bir TosError bulunur.

Portal, kullanıcılardan oturum açtıklarında otomatik olarak en güncel Hizmet Şartları'nı kabul etmelerini ister. Uygulamanız için önerilen yaklaşımları görmek için EMM entegrasyon kılavuzundaki Herkese açık kullanıcı adı Hizmet Şartları'nı okuyun.

Uygulamanıza yetkilendirme ekleme

Uygulamanızın müşteri API'sine gönderdiği her istek bir yetkilendirme jetonu içermelidir. Bu jeton ayrıca uygulamanızı Google'a tanıtır. Müşteri API'si kullanıcı verilerine eriştiği için, yetkilendirme verilerin sahibinden gelmelidir. Uygulamanız, OAuth 2.0 protokolünü kullanarak BT yöneticilerine API yetkilendirmesi yetkisi verir.

Talimatlar

Java, .NET ve Python uygulamaları için hızlı başlangıç kılavuzları sağlıyoruz. Farklı bir dil kullanıyorsanız uygulamanız için yetkilendirme ayarlamak üzere aşağıdaki iki adımı uygulayın.

Yetkilendirme hakkında daha fazla bilgi edinmek için Google API'lerine Erişmek için OAuth 2.0'ı Kullanma başlıklı makaleyi okuyun.

Yetkilendirme kapsamları

OAuth 2.0 erişim jetonu istemek için uygulamanızda API yetkilendirme kapsamını https://www.googleapis.com/auth/androidworkzerotouchemm kullanın.

Kapsam parametresi, erişim jetonunun çağrılara izin verdiği kaynak ve işlemler grubunu kontrol eder. Erişim jetonları yalnızca jeton isteğinin kapsamında açıklanan işlem ve kaynaklar grubu için geçerlidir. API, yukarıda gösterilen tek el değmeden kayıt kapsamı ile tüm yöntem ve kaynakları kapsar.

Google API istemci kitaplığıyla kullanılan el değmeden kayıt kapsamının örneği için Java, .NET ve Python hızlı başlangıç kılavuzlarını inceleyin. Google API kapsamlarını kullanma hakkında daha fazla bilgi edinmek için Google API'lerine Erişmek için OAuth 2.0'ı Kullanma başlıklı makaleyi okuyun.

API anahtarları için en iyi uygulamalar

Uygulamalarınızda API anahtarları kullanırken anahtarlarınızı güvende tutmaya özen gösterin. Kimlik bilgilerinizin herkese açık olarak ifşa edilmesi, hesabınızın güvenliğinin ihlal edilmesine neden olabilir. Bu da hesabınızdan beklenmeyen ödemelere neden olabilir. API anahtarlarınızı güvende tutmak için aşağıdaki en iyi uygulamaları izleyin:

API anahtarlarını doğrudan koda yerleştirmeyin
Koda yerleştirilmiş API anahtarları yanlışlıkla herkese açık hale gelebilir (örneğin, paylaştığınız koddan anahtarları kaldırmayı unutursanız). API anahtarlarınızı uygulamalarınıza yerleştirmek yerine, ortam değişkenlerinde veya uygulamanızın kaynak ağacının dışındaki dosyalarda depolayın.
API anahtarlarını uygulamanızın kaynak ağacındaki dosyalarda depolama
API anahtarları dosyalarda depoluyorsanız anahtarlarınızın kaynak kodu kontrol sisteminize girmemesi için dosyaları uygulamanızın kaynak ağacının dışında tutun. Bu durum, özellikle GitHub gibi herkese açık bir kaynak kodu yönetim sistemi kullanıyorsanız önemlidir.
API anahtarlarınızı yalnızca bunlara ihtiyaç duyan IP adresleri, yönlendiren URL'ler ve mobil uygulamalar tarafından kullanılacak şekilde kısıtlayın
Her bir anahtarı kullanabilen IP adreslerini, yönlendiren URL'leri ve mobil uygulamaları kısıtlayarak güvenliği ihlal edilmiş API anahtarının etkisini azaltabilirsiniz. Kimlik bilgileri sayfasını açıp istediğiniz ayarlarla yeni bir API anahtarı oluşturarak veya bir API anahtarının ayarlarını düzenleyerek Google API Konsolu'nda her bir anahtarı kullanabilecek barındırıcıları ve uygulamaları belirtebilirsiniz.
Gereksiz API anahtarlarını silin
Saldırıya uğrama riskinizi en aza indirmek için artık ihtiyaç duymadığınız API anahtarlarını silin.
API anahtarlarınızı düzenli aralıklarla yeniden oluşturma
Kimlik bilgileri sayfasını açıp bir API anahtarı seçerek ve her anahtar için Anahtarı yeniden oluştur'u tıklayarak API anahtarlarını Google API Konsolu'ndan yeniden oluşturabilirsiniz. Ardından uygulamalarınızı yeni oluşturulan anahtarları kullanacak şekilde güncelleyin. Yeni anahtarlarınız oluşturulduktan sonra eski anahtarlarınız 24 saat boyunca çalışmaya devam eder.
Herkese açık olarak yayınlamadan önce kodunuzu inceleyin
Kodunuzu herkese açık hale getirmeden önce kodunuzun API anahtarları veya başka özel bilgiler içermediğinden emin olun.