การให้สิทธิ์

แอปให้สิทธิ์การเรียกใช้ customer API ของการตั้งค่าอุปกรณ์พร้อมใช้แบบรวมกลุ่มโดยใช้ OAuth เอกสารนี้อธิบายการให้สิทธิ์ของ API สำหรับผู้ให้บริการ Enterprise Mobility Management (EMM) และนักพัฒนาซอฟต์แวร์ด้านไอทีขององค์กร หลังจากอ่านเอกสารนี้ คุณจะทราบวิธีให้สิทธิ์คำขอ API ในแอปและอธิบายข้อกำหนดของบัญชีให้ผู้ใช้แอปทราบ

การเริ่มต้นการให้สิทธิ์อย่างรวดเร็ว

  • หากต้องการตั้งค่าโปรเจ็กต์ Google Cloud Platform ด้วย API การตั้งค่าอุปกรณ์พร้อมใช้แบบรวมกลุ่มและรหัสลับไคลเอ็นต์ OAuth ให้เรียกใช้วิซาร์ดนี้
  • สร้างโค้ดตัวอย่างสำหรับการเริ่มใช้งานอย่างรวดเร็วสำหรับ Java, .NET หรือ Python ใช้ไลบรารีของไคลเอ็นต์ API ของ Google เพื่อรองรับภาษาอื่นๆ

ภาพรวม

ความสัมพันธ์ด้านทรัพยากรของอุปกรณ์กับลูกค้า

  1. ผู้ดูแลระบบไอทีอย่างน้อย 1 คนเป็นผู้ใช้ในบัญชีลูกค้าการตั้งค่าอุปกรณ์พร้อมใช้แบบรวมกลุ่ม
  2. ผู้ดูแลระบบไอทีจะใช้บัญชี Google ในการตรวจสอบสิทธิ์ตนเอง
  3. คำขอ API จะส่งโทเค็น OAuth2 เพื่อให้สิทธิ์คำขอ API ในนามของผู้ดูแลระบบไอที

บัญชีลูกค้า

การกำหนดค่า อุปกรณ์ และผู้ใช้ (ผู้ดูแลระบบไอที) ขององค์กรเป็นของบัญชีลูกค้า บัญชีของลูกค้านั้นคล้ายกับกลุ่มและไม่ใช่ผู้ใช้รายบุคคล ตัวแทนจำหน่ายจะตั้งค่าลูกค้าเมื่อองค์กรซื้ออุปกรณ์สำหรับการตั้งค่าอุปกรณ์พร้อมใช้แบบรวมกลุ่มเป็นครั้งแรก ผู้ดูแลระบบไอทีจะจัดการผู้ใช้คนอื่นๆ ในองค์กรโดยใช้พอร์ทัลการตั้งค่าอุปกรณ์พร้อมใช้แบบรวมกลุ่ม

API จะใช้รหัสลูกค้าเป็นตัวเลขเพื่อระบุบัญชี คุณจะต้องส่งรหัสลูกค้าเป็นส่วนหนึ่งของเส้นทาง URL เมื่อเรียกใช้เมธอด API แอปต้องได้รับรหัสลูกค้า ของผู้ใช้ก่อนจึงจะเรียกใช้เมธอด API ใดๆ ได้

ตัวอย่างด้านล่างแสดงวิธีรับบัญชีลูกค้าสำหรับผู้ใช้ที่ให้สิทธิ์การเรียก 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 บัญชีแรกเท่านั้น หากต้องการเรียนรู้วิธีดำเนินการ ให้อ่านผลการค้นหาที่แบ่งหน้า

โดยทั่วไป องค์กรหนึ่งจะมีบัญชีลูกค้า 1 บัญชี แต่องค์กรขนาดใหญ่อาจใช้บัญชีลูกค้าแยกกันสำหรับแต่ละแผนก เนื่องจากผู้ดูแลระบบไอทีอาจเป็นสมาชิกของบัญชีลูกค้าที่แตกต่างกันได้ แอปของคุณจึงควรช่วยให้ผู้ใช้ค้นพบและใช้บัญชีลูกค้าใหม่ได้ ในแอป ให้ติดป้ายกำกับบัญชีลูกค้าแต่ละบัญชีโดยใช้ค่า companyName

ผู้ใช้

ผู้ดูแลระบบไอทีให้สิทธิ์คำขอ API ที่แอปของคุณส่งในนามของผู้ดูแลระบบ หากต้องการให้สิทธิ์คำขอ API ผู้ใช้แอปต้องดำเนินการดังนี้

  1. เชื่อมโยงบัญชี Google กับอีเมล
  2. เข้าร่วมบัญชีลูกค้าโดยใช้อีเมลเดียวกัน
  3. ยอมรับข้อกำหนดในการให้บริการ (ToS) ของลูกค้าในการตั้งค่าอุปกรณ์พร้อมใช้แบบรวมกลุ่ม

หากต้องการช่วยให้ผู้ใช้แอปตั้งค่าได้ ให้ใช้คำแนะนำของเราสำหรับผู้ดูแลระบบไอทีอีกครั้งในหัวข้อเริ่มต้นใช้งานและเชื่อมโยงบัญชี Google ในเอกสารของคุณเอง

การจัดการผู้ใช้

ผู้ดูแลระบบไอทีจัดการผู้ใช้สำหรับบัญชีลูกค้าในพอร์ทัลการลงทะเบียนอุปกรณ์พร้อมใช้แบบรวมกลุ่ม ผู้ใช้ในบัญชีลูกค้าจะมีบทบาทที่เป็นเจ้าของหรือผู้ดูแลระบบ ทั้ง 2 บทบาทมีสิทธิ์เข้าถึง API ของลูกค้าเหมือนกัน แต่เจ้าของสามารถจัดการผู้ใช้คนอื่นๆ ได้

การยอมรับข้อกำหนดในการให้บริการ

ผู้ใช้แอปต้องยอมรับข้อกำหนดในการให้บริการล่าสุดก่อน จึงจะให้สิทธิ์การเรียก API ได้ ซึ่งจะเกิดขึ้นเมื่อผู้ดูแลระบบไอทีใช้การตั้งค่าอุปกรณ์พร้อมใช้แบบรวมกลุ่มเป็นครั้งแรก หรือเมื่อเราอัปเดตข้อกำหนดในการให้บริการ เมื่อผู้ใช้ไม่ยอมรับข้อกำหนดในการให้บริการล่าสุด API จะแสดงรหัสสถานะ HTTP 403 Forbidden และเนื้อหาการตอบกลับมี TosError

พอร์ทัลนี้แจ้งให้ผู้ใช้ยอมรับข้อกำหนดในการให้บริการล่าสุดโดยอัตโนมัติเมื่อลงชื่อเข้าใช้ หากต้องการดูแนวทางที่แนะนำซึ่งแอปของคุณอาจใช้ประกอบ โปรดอ่านข้อกำหนดในการให้บริการของแฮนเดิลในคู่มือการผสานรวม EMM

เพิ่มการให้สิทธิ์ลงในแอป

ทุกคำขอที่แอปส่งไปยัง Customer API ต้องมีโทเค็นการให้สิทธิ์ โทเค็นดังกล่าวจะระบุตัวตนแอปพลิเคชันของคุณให้ Google ทราบด้วย เนื่องจาก API ของลูกค้าเข้าถึงข้อมูลผู้ใช้ การให้สิทธิ์ต้องมาจากเจ้าของข้อมูล แอปมอบสิทธิ์ API ให้กับผู้ดูแลระบบไอทีโดยใช้โปรโตคอล OAuth 2.0

วิธีการ

เรามีคู่มือเริ่มใช้งานฉบับย่อสำหรับแอป Java, .NET และ Python หากคุณใช้ภาษาอื่น ให้ทำตาม 2 ขั้นตอนด้านล่างเพื่อตั้งค่าการให้สิทธิ์สำหรับแอปของคุณ

หากต้องการดูข้อมูลเพิ่มเติมเกี่ยวกับการให้สิทธิ์ โปรดอ่านการใช้ OAuth 2.0 เพื่อเข้าถึง Google API

ขอบเขตการให้สิทธิ์

ใช้ขอบเขตการให้สิทธิ์ API https://www.googleapis.com/auth/androidworkzerotouchemm ในแอปเพื่อขอโทเค็นเพื่อการเข้าถึง OAuth 2.0

พารามิเตอร์ขอบเขตจะควบคุมชุดทรัพยากรและการดำเนินการที่โทเค็นการเข้าถึงอนุญาตให้เรียกใช้ โทเค็นเพื่อการเข้าถึงจะใช้ได้เฉพาะสำหรับชุดการดำเนินการและทรัพยากรที่อธิบายไว้ในขอบเขตของคำขอโทเค็นเท่านั้น API จะครอบคลุมวิธีการและทรัพยากรทั้งหมดด้วยขอบเขตการตั้งค่าอุปกรณ์พร้อมใช้แบบรวมกลุ่มเดียวที่แสดงด้านบน

หากต้องการดูตัวอย่างขอบเขตการตั้งค่าอุปกรณ์พร้อมใช้แบบรวมกลุ่มที่ใช้กับไลบรารีของไคลเอ็นต์ Google API โปรดดูการเริ่มต้นใช้งานอย่างรวดเร็วสำหรับ Java, .NET และ Python ดูข้อมูลเพิ่มเติมเกี่ยวกับการใช้ขอบเขต Google API ได้ที่การใช้ OAuth 2.0 เพื่อเข้าถึง Google API

แนวทางปฏิบัติแนะนำสำหรับคีย์ API

เมื่อใช้คีย์ API ในแอปพลิเคชัน โปรดใช้ความระมัดระวัง การเปิดเผยข้อมูลเข้าสู่ระบบของคุณต่อสาธารณะอาจส่งผลให้บัญชีถูกบุกรุก ซึ่งอาจนำไปสู่การเรียกเก็บเงินที่ไม่คาดคิดในบัญชี โปรดทำตามแนวทางปฏิบัติแนะนำต่อไปนี้เพื่อเก็บรักษาคีย์ API ให้ปลอดภัย

อย่าฝังคีย์ API ในโค้ดโดยตรง
คีย์ API ที่ฝังในโค้ดอาจเปิดเผยต่อสาธารณะโดยไม่ตั้งใจ เช่น หากคุณลืมนำคีย์ออกจากโค้ดที่คุณแชร์ จัดเก็บคีย์ API ไว้ในตัวแปรสภาพแวดล้อมหรือในไฟล์นอกโครงสร้างแหล่งที่มาของแอปพลิเคชันแทนการฝังคีย์ API ในแอปพลิเคชัน
อย่าจัดเก็บคีย์ API ในไฟล์ภายในโครงสร้างแหล่งที่มาของแอปพลิเคชัน
หากคุณเก็บคีย์ API ไว้ในไฟล์ ให้เก็บไฟล์ไว้นอกโครงสร้างซอร์สของแอปพลิเคชันเพื่อให้แน่ใจว่าคีย์จะไม่เข้าไปอยู่ในระบบควบคุมซอร์สโค้ดของคุณ ซึ่งสำคัญมากหากคุณใช้ระบบจัดการซอร์สโค้ดสาธารณะ เช่น GitHub
จำกัดคีย์ API ให้ใช้โดยที่อยู่ IP, URL ที่มา และแอปบนอุปกรณ์เคลื่อนที่ที่จำเป็นต้องใช้คีย์ API เท่านั้น
การจำกัดที่อยู่ IP, URL ที่มา และแอปบนอุปกรณ์เคลื่อนที่ที่ใช้แต่ละคีย์ได้จะช่วยลดผลกระทบจากคีย์ API ที่ถูกบุกรุก คุณระบุโฮสต์และแอปที่ใช้แต่ละคีย์ได้จากคอนโซล Google API โดยเปิดหน้าข้อมูลเข้าสู่ระบบ จากนั้นสร้างคีย์ API ใหม่ด้วยการตั้งค่าที่ต้องการ หรือแก้ไขการตั้งค่าของคีย์ API
ลบคีย์ API ที่ไม่จำเป็น
หากต้องการลดโอกาสที่จะเกิดการโจมตี ให้ลบคีย์ API ที่คุณไม่ใช้แล้ว
สร้างคีย์ API ใหม่เป็นระยะๆ
คุณสร้างคีย์ API ใหม่จากคอนโซล Google API ได้โดยเปิดหน้าข้อมูลเข้าสู่ระบบ เลือกคีย์ API แล้วคลิกสร้างคีย์ใหม่สำหรับแต่ละคีย์ จากนั้นให้อัปเดตแอปพลิเคชันให้ใช้คีย์ที่สร้างขึ้นใหม่ คีย์เก่าจะยังคงใช้งานได้เป็นเวลา 24 ชั่วโมงหลังจากที่คุณสร้างคีย์เปลี่ยนทดแทน
ตรวจสอบโค้ดของคุณก่อนเผยแพร่สู่สาธารณะ
ตรวจสอบว่าโค้ดไม่มีคีย์ API หรือข้อมูลส่วนตัวอื่นๆ ก่อนทำให้โค้ดพร้อมใช้งานแบบสาธารณะ