Ủy quyền

Ứng dụng uỷ quyền các lệnh gọi đến API khách hàng đăng ký không tiếp xúc bằng OAuth. Tài liệu này giải thích việc uỷ quyền của API cho 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 doanh nghiệp. Sau khi đọc tài liệu này, bạn sẽ biết cách cấp quyền cho các yêu cầu API trong và giải thích các yêu cầu về tài khoản cho người dùng ứng dụng.

Hướng dẫn bắt đầu nhanh về việc uỷ quyền

  • Cách thiết lập dự án Google Cloud Platform bằng API thiết lập tự động và mật khẩu ứ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ữ.

Tổng quan

Mối quan hệ với thiết bị và tài nguyên khách hàng

  1. Một hoặc nhiều quản trị viên CNTT là người dùng trong một 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 để xác thực bản thân.
  3. Các yêu cầu API chuyển một mã thông báo OAuth2 để cấp quyền cho các yêu cầu API thay 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 một tổ chức thuộc về một tài khoản khách hàng của bạn. Tài khoản khách hà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 trước tiên mua thiết bị để 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 mình thông qua cổng thiết lập tự động.

API sử dụng mã khách hàng dạng số để xác định tài khoản. Bạn truyền mã khách hàng trong đường dẫn URL khi gọi các 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 cho phép 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, bạn cần điều hướng các 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 bài viết Kết quả được phân trang.

Một tổ chức thường có một tài khoản khách hàng nhưng các tổ chức có quy mô 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ể Nếu bạn là thành viên của nhiều tài khoản khách hàng, ứng dụng của bạn sẽ giúp người dùng tìm thấy 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 từng tài khoản khách hàng bằng Giá trị companyName.

Người dùng

Quản trị viên CNTT uỷ quyền cho các yêu cầu API mà ứng dụng của bạn thay mặt họ gửi. Người nhận cho phép các yêu cầu API, thì người dùng của ứng dụng cần thực hiện những việc sau:

  1. Liên kết Tài khoản Google với địa chỉ email của người đó.
  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 của bạn 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 Tải đã 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 của tài khoản khách hàng bằng cơ chế tự động đăng ký cổ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ý những 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ể uỷ quyền các lệnh gọi API, họ cần chấp nhận các lệnh gọi API Điều khoản dịch vụ Đ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 tiên hoặc khi chúng tôi hãy 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ột Mã trạng thái HTTP 403 Forbidden và nội dung phản hồi chứa 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ọ ký trong năm Để 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 bài viết Xử lý các điều khoản Dịch vụ trong hướng dẫn tích hợp EMM.

Thêm quyền uỷ 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 đều phải bao gồm mã uỷ quyền. Mã này cũng giúp Google xác định ứng dụng của bạn. Vì API của khách hàng truy cập vào dữ liệu người dùng, sự uỷ quyền phải do chủ sở hữu . Ứng dụng của bạn ủy quyền API cho quản trị viên CNTT bằng OAuth 2.0 giao thức.

Hướng dẫn

Chúng tôi cung cấp hướng dẫn bắt đầu nhanh cho Java, .NET và Ứng dụng Python. Nếu bạn đang sử dụng một ngôn ngữ khác, hãy làm theo các bước bên dưới để thiết lập ủy quyền cho .

Để 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 Google API.

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 quyền truy cập mã thông báo cho phép gọi đến. Mã thông báo truy cập chỉ hợp lệ đối với tập hợp các thao tác và tài nguyên được mô tả trong phạm vi của 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 có phạm vi thiết lập tự động một lần hiển thị ở trên.

Ví dụ về phạm vi thiết lập tự động được sử dụng với API Google thư viện ứng dụng, hãy xem phần hướng dẫn bắt đầu nhanh về 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 Cách sử dụng OAuth 2.0 để truy cập Google API.

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

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

Không nhúng trực tiếp khoá API vào mã
Khoá API được nhúng trong mã có thể vô tình bị lộ với 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 khoá API trong các ứng dụng của bạn, hãy lưu trữ chúng trong biến môi trường hoặc trong các tệp bên ngoài nguồn của ứng dụng của bạn cây xanh.
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 đưa những tệp đó ra ngoài cây nguồn để đảm bảo khoá của bạn không xuất hiện trong chế độ kiểm soát mã nguồn hệ thống. Điều này đặc biệt quan trọng nếu bạn sử dụng mã nguồn công khai hệ thống quản lý như GitHub.
Hạn chế chỉ cho phép các địa chỉ IP, URL giới thiệu và ứng dụng di động cần đến khoá API mới được sử dụng khoá API
Bằng cách hạn chế các địa chỉ IP, URL giới thiệu và ứng dụng di động có thể sử dụng từng khoá, bạn có thể giảm tác động của khoá API bị xâm phạm. Bạn có thể chỉ định máy chủ lưu trữ và ứng dụng có thể sử 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 bằng chế độ cài đặt bạn muốn hoặc chỉnh sửa chế độ cài đặt của khoá API.
Xoá các khoá API không cần thiết
Để giảm thiểu nguy cơ bị tấn công, hãy xoá mọi khoá API mà bạn không cần thiết lâu hơn.
Tạo lại khoá API theo định kỳ
Bạn có thể tạo lại khoá API từ Google API Console bằng cách mở Trang thông tin đăng nhập, chọn một khoá API rồi nhấp vào Tạo lại cho từng khoá. Sau đó, hãy cập nhật ứng dụng của bạn để sử dụng mã mới được tạo khoá. Khoá cũ của bạn sẽ tiếp tục hoạt động trong 24 giờ sau khi bạn tạo chìa khoá thay thế.
Xem lại mã trước khi phát hành công khai
Đảm bảo rằng mã của bạn không chứa khoá API hoặc bất kỳ nội dung riêng tư nào khác trước khi bạn công khai mã của mình.