Uỷ quyền

Các ứng dụng cho phép các lệnh gọi đến API khách hàng thiết lập tự động bằng cách sử dụng OAuth. Tài liệu này giải thích việc cấp phép của API cho các nhà cung cấp giải pháp quản lý di động dành cho doanh nghiệp (EMM) và nhà phát triển CNTT cho doanh nghiệp. Sau khi đọc tài liệu này, bạn sẽ biết cách cho phép các yêu cầu API trong ứng dụng của mình và giải thích các yêu cầu về tài khoản cho người dùng ứng dụng.

Bắt đầu nhanh về việc uỷ quyền

  • Để thiết lập dự án Google Cloud Platform bằng API thiết lập tự động và mã thông báo bí mật của ứng dụng OAuth, hãy chạy trình hướng dẫn này.
  • Tạo mã mẫu bắt đầu nhanh cho Java, .NET hoặc Python. Sử dụng thư viện ứng dụng API của Google để hỗ trợ các ngôn ngữ khác.

Tổng quan

Mối quan hệ giữa thiết bị và tài nguyên của khách hàng

  1. Một hoặc nhiều quản trị viên CNTT là người dùng trong tài khoản khách hàng thiết lập tự động.
  2. Quản trị viên CNTT sử dụng Tài khoản Google để tự xác thực.
  3. Các yêu cầu API sẽ chuyển mã thông báo OAuth2 để uỷ quyền cho các yêu cầu API thay mặt cho một quản trị viên CNTT.

Tài khoản khách hàng

Các cấu hình, thiết bị và người dùng (quản trị viên CNTT) của tổ chức thuộc về tài khoản khách hàng. Tài khoản khách hàng cũng tương tự như một nhóm và không phải là người dùng cá nhân. Đại lý thiết lập khách hàng khi tổ chức mua thiết bị lần đầu để thiết lập tự động. Quản trị viên CNTT quản lý người dùng khác trong tổ chức của họ bằng cổng thiết lập tự động.

API sử dụng mã khách hàng dạng số để xác định các tài khoản. Bạn truyền mã khách hàng dưới dạng một phần của đường dẫn URL khi gọi phương thức API. Ứng dụng của bạn cần lấy mã khách hàng của người dùng trước khi gọi bất kỳ phương thức API nào.

Ví dụ bên dưới cho biết cách lấy tài khoản khách hàng cho người dùng uỷ quyền lệnh gọi 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']))

Trong ứng dụng của mình, bạn cần di chuyển đến trang kết quả tài khoản vì ví dụ ở trên chỉ in 100 tài khoản đầu tiên. Để tìm hiểu cách thực hiện việc này, hãy đọc Kết quả được phân trang.

Mỗi tổ chức thường có một tài khoản khách hàng nhưng các tổ chức lớn hơn có thể sử dụng các tài khoản khách hàng riêng cho từng bộ phận. Vì quản trị viên CNTT có thể là thành viên của nhiều tài khoản khách hàng, nên ứng dụng của bạn sẽ giúp người dùng tìm và sử dụng tài khoản khách hàng mới. Trong ứng dụng của bạn, hãy gắn nhãn cho từng tài khoản khách hàng bằng cách sử dụng giá trị companyName.

Số người dùng

Quản trị viên CNTT thay mặt họ uỷ quyền cho các yêu cầu API mà ứng dụng của bạn gửi. Để uỷ quyền cho các yêu cầu API, người dùng ứng dụng cần làm những việc sau:

  1. Liên kết Tài khoản Google với địa chỉ email của họ.
  2. Tham gia tài khoản khách hàng bằng cùng một địa chỉ email.
  3. Chấp nhận Điều khoản dịch vụ (ToS) dành cho khách hàng thiết lập tự động.

Để giúp người dùng ứng dụng thiết lập, hãy sử dụng lại hướng dẫn của chúng tôi dành cho quản trị viên CNTT trong phần Bắt đầuLiên kết Tài khoản Google trong tài liệu của riêng bạn.

Quản lý người dùng

Quản trị viên CNTT quản lý người dùng cho các tài khoản khách hàng của họ trong cổng đăng ký tự động đăng ký. Người dùng trong tài khoản khách hàng có vai trò là Chủ sở hữu hoặc Quản trị viên. Cả hai vai trò đều có cùng quyền truy cập vào API khách hàng nhưng Chủ sở hữu có thể quản lý người dùng khác.

Chấp nhận Điều khoản dịch vụ

Trước khi người dùng ứng dụng có thể cho phép các lệnh gọi API, họ cần chấp nhận Điều khoản dịch vụ mới nhất. Điều này xảy ra khi quản trị viên CNTT sử dụng quy trình thiết lập tự động lần đầu hoặc khi chúng tôi cập nhật Điều khoản dịch vụ. Khi người dùng chưa chấp nhận Điều khoản dịch vụ mới nhất, API sẽ trả về mã trạng thái HTTP 403 Forbidden và nội dung phản hồi sẽ chứa một TosError.

Cổng thông tin sẽ tự động nhắc người dùng chấp nhận Điều khoản dịch vụ mới nhất khi họ đăng nhập. Để xem các phương pháp đề xuất mà ứng dụng của bạn có thể đưa vào, hãy đọc phần Xử lý điều khoản dịch vụ trong hướng dẫn tích hợp EMM.

Thêm quyền vào ứng dụng

Mỗi yêu cầu mà ứng dụng của bạn gửi tới API khách hàng phải bao gồm một mã thông báo uỷ quyền. Mã này cũng giúp Google xác định ứng dụng của bạn. Vì API khách hàng truy cập vào dữ liệu người dùng, nên sự uỷ quyền phải đến từ chủ sở hữu dữ liệu. Ứng dụng của bạn uỷ quyền API cho quản trị viên CNTT bằng giao thức OAuth 2.0.

Hướng dẫn

Chúng tôi cung cấp hướng dẫn bắt đầu nhanh cho các ứng dụng Java, .NETPython. Nếu bạn đang sử dụng một ngôn ngữ khác, hãy làm theo 2 bước dưới đây để thiết lập tính năng uỷ quyền cho ứng dụng.

Để tìm hiểu thêm về việc uỷ quyền, hãy đọc bài viết Sử dụng OAuth 2.0 để truy cập vào API của Google.

Phạm vi uỷ quyền

Sử dụng phạm vi uỷ quyền API https://www.googleapis.com/auth/androidworkzerotouchemm trong ứng dụng của bạn để yêu cầu mã truy cập OAuth 2.0.

Tham số phạm vi kiểm soát tập hợp tài nguyên và thao tác mà một mã truy cập cho phép lệnh gọi đến. Mã truy cập chỉ hợp lệ đối với tập hợp thao tác và tài nguyên được mô tả trong phạm vi yêu cầu mã thông báo. API này bao gồm tất cả các phương thức và tài nguyên với phạm vi thiết lập tự động như trình bày ở trên.

Để biết ví dụ về phạm vi thiết lập tự động được sử dụng với thư viện ứng dụng API của Google, hãy xem hướng dẫn bắt đầu nhanh cho Java, .NETPython. Để tìm hiểu thêm về cách sử dụng các phạm vi API của Google, hãy đọc bài viết Sử dụng OAuth 2.0 để truy cập vào các API của Google.

Các phương pháp hay nhất cho khoá API

Khi bạn sử dụng khoá API trong ứng dụng, hãy chú ý bảo mật những khoá này. Việc tiết lộ công khai thông tin đăng nhập có thể khiến tài khoản của bạn bị xâm phạm, từ đó có thể khiến tài khoản của bạn bị tính các khoản phí ngoài dự kiến. Để giữ an toàn cho khoá API, hãy làm theo các phương pháp hay nhất sau đây:

Không nhúng khoá API trực tiếp vào mã
Các khoá API được nhúng trong mã có thể vô tình bị lộ công khai, ví dụ: nếu bạn quên xoá khoá khỏi mã mà bạn chia sẻ. Thay vì nhúng các khoá API vào ứng dụng, hãy lưu trữ các khoá này trong các biến môi trường hoặc trong các tệp bên ngoài cây nguồn của ứng dụng.
Không lưu trữ khoá API trong các tệp bên trong cây nguồn của ứng dụng
Nếu bạn lưu trữ khoá API trong tệp, hãy giữ các tệp này bên ngoài cây nguồn của ứng dụng để đảm bảo khoá của bạn không bị đưa vào hệ thống kiểm soát mã nguồn. Điều này đặc biệt quan trọng nếu bạn sử dụng một hệ thống quản lý mã nguồn công khai như GitHub.
Hạn chế để chỉ sử dụng khoá API của các địa chỉ IP, URL liên kết giới thiệu và ứng dụng dành cho thiết bị di động cần các khoá này
Bằng cách hạn chế các địa chỉ IP, URL liên kết giới thiệu và ứng dụng di động có thể dùng từng khoá, bạn có thể giảm thiểu tác động của khoá API bị xâm phạm. Bạn có thể chỉ định những máy chủ lưu trữ và ứng dụng có thể dùng từng khoá trong Google API Console bằng cách mở trang Thông tin xác thực, sau đó tạo khoá API mới với chế độ cài đặt bạn muốn hoặc chỉnh sửa chế độ cài đặt của khoá API.
Xoá khoá API không cần thiết
Để giảm thiểu nguy cơ bị tấn công, hãy xoá bất kỳ khoá API nào mà bạn không còn cần nữa.
Tạo lại khoá API theo định kỳ
Bạn có thể tạo lại khoá API từ Bảng điều khiển API của Google bằng cách mở trang Thông tin xác thực, chọn khoá API rồi nhấp vào Tạo lại khoá cho từng khoá. Sau đó, hãy cập nhật các ứng dụng của bạn để sử dụng các khoá mới tạo. Các khoá cũ sẽ tiếp tục hoạt động trong 24 giờ sau khi bạn tạo khoá thay thế.
Xem xét mã của bạn trước khi phát hành công khai
Hãy đảm bảo rằng mã của bạn không chứa khoá API hoặc bất kỳ thông tin riêng tư nào khác trước khi công khai mã.