Có hai loại danh tính người dùng chính cho việc đăng ký Android Enterprise: Tài khoản Google Play có quản lý và Tài khoản Google có quản lý. Tài khoản Managed Google Play tập trung vào thiết bị, tức là không liên kết với danh tính Google của một người dùng cụ thể. Ngược lại, Tài khoản Google được quản lý được liên kết với danh tính Google của người dùng trong doanh nghiệp, giúp cải thiện trải nghiệm người dùng bằng cách giữ cho họ luôn đăng nhập trên thiết bị.
Tài khoản Google Play có quản lý từng là tiêu chuẩn. Tuy nhiên, hiện tại, Google khuyến khích tất cả các hoạt động phát triển mới sử dụng quy trình đăng ký được cải tiến. Quy trình này mặc định tạo Tài khoản Google được quản lý.
Mặc dù hướng dẫn về việc triển khai cũ được cung cấp ở cuối tài liệu này để làm bối cảnh, nhưng mọi hoạt động phát triển mới đều phải tuân theo quy trình đăng ký mới được trình bày chi tiết tại đây.
Tổng quan
Quy trình đăng ký thiết bị được cải tiến giúp đơn giản hoá việc thiết lập thiết bị bằng cách tận dụng một số thành phần mới và thay đổi cách triển khai Bộ điều khiển chính sách thiết bị (DPC) tuỳ chỉnh. Phương pháp mới này yêu cầu các giải pháp DPC tuỳ chỉnh tích hợp với Android Management API (AMAPI) SDK và Android Device Policy để thực hiện các chức năng chuẩn bị thiết bị và đăng ký người dùng.
SDK AMAPI cung cấp các API cần thiết để tương tác với Chính sách thiết bị Android trên chính thiết bị. Về phía máy chủ, các giải pháp Quản lý thiết bị di động doanh nghiệp (EMM) sẽ sử dụng Play EMM API để tạo mã thông báo đăng ký cần thiết để bắt đầu quy trình đăng ký thiết bị.
Ứng dụng Android Device Policy hiện đóng vai trò trung tâm trong việc xử lý các hoạt động phía thiết bị. SDK AMAPI được dùng để quản lý quá trình cài đặt và các bản cập nhật cần thiết trên thiết bị. Android Device Policy cũng tiếp quản quy trình xác thực người dùng, xử lý trực tiếp việc xác thực người dùng và cung cấp danh tính của người dùng cho EMM. Nếu Google không thể xác thực người dùng vì bất kỳ lý do nào, thì một tài khoản Managed Google Play mới sẽ được tạo và thêm vào thiết bị làm phương án dự phòng.
Một phần quan trọng trong quy trình đăng ký mới này là quản lý quyền truy cập của thiết bị vào các dịch vụ của Google. Theo mặc định, các thiết bị sẽ khởi động ở trạng thái bị hạn chế và EMM đóng vai trò quan trọng trong việc cho phép truy cập sau khi thiết bị tuân thủ.
Tích hợp API
Trước khi bắt đầu, hãy xác minh rằng bạn đang sử dụng phiên bản mới nhất của ứng dụng API Play EMM và AMAPI SDK.
Hướng dẫn triển khai quy trình đăng ký
Hướng dẫn này cung cấp các bước cần thiết để triển khai quy trình đăng ký. Nội dung này đề cập đến việc chuẩn bị môi trường, xử lý các phương thức đăng ký khác nhau và quản lý vòng đời của thiết bị.
Chuẩn bị môi trường
Trước khi bắt đầu thiết lập tài khoản, bạn cần chuẩn bị môi trường thiết bị. Quá trình chuẩn bị này bao gồm việc cập nhật Cửa hàng Play lên phiên bản mới nhất và cài đặt Android Device Policy (com.google.android.apps.work.clouddpc) vào thiết bị mà không cần người dùng thao tác. Bạn cần phải cài đặt Android Device Policy vì ứng dụng này chứa các thành phần quan trọng của quy trình Thiết lập tài khoản. EMM không cần chuẩn bị môi trường theo cách thủ công. Thay vào đó, họ nên sử dụng EnvironmentClient, như được ghi lại tại và tuân thủ các ví dụ về mã được cung cấp.
Mã mẫu
Trước khi có thể sử dụng API AccountSetup để thêm tài khoản công việc vào thiết bị, trước tiên, DPC phải xác minh rằng môi trường thiết bị đã sẵn sàng.
Dùng
EnvironmentClientFactoryđể khởi tạo mộtEnvironmentClientvà gọiprepareEnvironmenthoặcprepareEnvironmentAsyncval notificationReceiverServiceName = ComponentName(context, NotificationReceiver::class.java) // An EMM should implement android.app.admin.DeviceAdminReceiver and use that // class to instantiate a ComponentName val admin = ComponentName(this, com.example.dpc.DeviceAdminReceiver::class.java) EnvironmentClientFactory.create(context) .prepareEnvironment( PrepareEnvironmentRequest.builder() .setRoles( listOf( Role.builder().setRoleType( Role.RoleType.DEVICE_POLICY_CONTROLLER ).build() ) ) .setAdmin(admin) .build(), notificationReceiverServiceName, ) [Proceed with AccountSetup]
Thao tác này có thể mất vài giây hoặc vài phút, vì các ứng dụng có thể được cài đặt hoặc cập nhật để xác minh môi trường hoạt động phù hợp. Google đề xuất bắt đầu quá trình này càng sớm càng tốt ở chế độ nền và cho thấy giao diện người dùng phù hợp trong khi người dùng chờ đợi. Khi thao tác hoàn tất, thiết bị sẽ sẵn sàng để DPC sử dụng AccountSetup API.
Quy trình đăng ký
EMM phải ngừng sử dụng users.generateAuthenticationToken() và users.insert() cho tất cả các thiết bị. Thay vào đó, EMM phải gọi API trên thiết bị để thực hiện quy trình xác thực người dùng cuối. API mới sẽ trả về userId và email cho DPC. Nếu Google không thể xác thực người dùng, thì một Tài khoản Google Play do quản lý sẽ được tạo và thêm vào thiết bị. Trong trường hợp này, Google sẽ trả về userId của tài khoản đó.
Giờ đây, Google giới thiệu việc sử dụng mã thông báo đăng ký. Bạn phải truyền mã thông báo này đến API xác thực. EMM xác định thời điểm và cách tạo mã thông báo, đồng thời mã thông báo này có thể là một phần của tải trọng đăng ký hiện có (ví dụ: mã QR hoặc cấu hình Zero-touch).
Miễn trừ đối với mã thông báo đăng ký hiện có
Một số khách hàng sử dụng mã thông báo đăng ký có ngày hết hạn dài để thực hiện các lần đăng ký lặp lại. Để đảm bảo những quy trình hiện có này không bị gián đoạn, mọi mã thông báo được tạo TRƯỚC khi yêu cầu "Xác thực bằng Google" được bật lần đầu tiên đều được miễn các lời nhắc đăng nhập mới. Các mã thông báo cũ này sẽ tiếp tục hoạt động như trước đây, cho phép người dùng đăng ký thiết bị mà không cần trải qua quy trình xác thực của Google. Tuy nhiên, mọi mã thông báo được tạo SAU khi yêu cầu xác thực của Google được bật lần đầu tiên sẽ tuân theo các quy tắc xác thực mới. Điều này có nghĩa là những thiết bị sử dụng các mã thông báo mới hơn này sẽ yêu cầu người dùng xác thực theo chế độ cài đặt do quản trị viên CNTT chọn.
Google đề xuất tạo mã thông báo theo yêu cầu và thay thế API hiện có cho Tài khoản Google Play được quản lý bằng API mới để giảm thiểu thay đổi.
Quy trình đăng ký DPC tuỳ chỉnh được cải tiến bao gồm các bước sau:
Trạng thái ban đầu quan trọng của thiết bị: Khi đăng ký một thiết bị bằng DPC tuỳ chỉnh, Tài khoản Google được thêm vào thiết bị sẽ bắt đầu ở trạng thái đã tắt. Điều này có nghĩa là ban đầu, bạn sẽ bị hạn chế truy cập vào các dịch vụ của Google, bao gồm cả Google Play.
Trạng thái "đã tắt" mặc định này và yêu cầu tiếp theo đối với EMM là đánh dấu thiết bị là tuân thủ (ví dụ: bằng cách gọi Devices.SetState) được áp dụng cụ thể trong các điều kiện sau:
- Tổ chức đã xác minh quyền sở hữu miền của họ với Google.
- Quản trị viên CNTT đã bật rõ ràng tính năng quản lý thiết bị di động Android của bên thứ ba cho Đơn vị tổ chức (OU) cụ thể của người dùng trong Bảng điều khiển dành cho quản trị viên của Google.
- Tạo mã thông báo đăng ký: EMM tạo mã thông báo đăng ký bằng Play EMM API.
- Chuẩn bị môi trường: DPC tuỳ chỉnh sử dụng quy trình Chuẩn bị môi trường để xác minh rằng thiết bị đã sẵn sàng cho quá trình đăng ký.
- Bắt đầu đăng ký: DPC tuỳ chỉnh sẽ gọi API
startAccountSetuptrong AMAPI SDK, truyền mã thông báo đăng ký. Lưu ý: DPC phải là chủ sở hữu thiết bị hoặc chủ sở hữu hồ sơ trước khi gọi API này. - Khởi chạy hoạt động xác thực của Google: Nếu cần, DPC tuỳ chỉnh sẽ gọi API
launchAuthenticationActivitytrong SDK AMAPI, truyềnAccountSetupAttempt. Thao tác này sẽ bắt đầu một hoạt động xác thực của Google, đưa người dùng trở lại DPC tuỳ chỉnh sau khi xác thực thành công. Người dùng cũng có thể bỏ qua quy trình này. Trong trường hợp này, một tài khoản Managed Google Play sẽ được thêm vào thiết bị. Bạn có thể định cấu hình lựa chọn này bằng cách sử dụnggoogleAuthenticationOptions. - Hoàn tất quy trình đăng ký: AMAPI SDK sẽ thông báo cho DPC tuỳ chỉnh về kết quả đăng ký.
- Bật các dịch vụ của Google: Sau khi DPC tuỳ chỉnh cung cấp đầy đủ thiết bị và xác nhận rằng thiết bị tuân thủ tất cả các chính sách của doanh nghiệp, máy chủ EMM phải gọi
Devices.setState()với tham sốaccountStateđược đặt thành"enabled".
- Tại sao điều này lại cần thiết: Lệnh gọi API này đánh dấu thiết bị là tuân thủ.
- Hậu quả của việc không gọi điện: Nếu không thực hiện cuộc gọi
Devices.setState(setStateRequest)này, tài khoản sẽ vẫn ở trạng thái "bị vô hiệu hoá". Người dùng sẽ không thể truy cập vào Google Play (để cài đặt hoặc cập nhật ứng dụng) và các dịch vụ khác của Google yêu cầu xác thực tài khoản.
Quản lý trạng thái thiết bị và quyền truy cập vào dịch vụ
Sau lần đăng ký ban đầu, EMM chịu trách nhiệm duy trì quyền truy cập của thiết bị vào các dịch vụ của Google dựa trên trạng thái tuân thủ của thiết bị.
Xử lý tình trạng gián đoạn dịch vụ: BAD_DEVICE_MANAGEMENT
Nếu quyền truy cập của một thiết bị vào các dịch vụ của Google bị chặn, thì Dịch vụ Google Play (GMSCore) sẽ truyền một Intent có thao tác: com.google.android.gms.auth.BAD_DEVICE_MANAGEMENT. Điều này có thể xảy ra vì một số lý do:
- EMM không bao giờ gọi Devices.setState("enabled") sau lần đăng ký thiết bị ban đầu.
- Thiết bị không còn tuân thủ các chính sách EMM và EMM chưa bật lại thiết bị.
- EMM đã đặt trạng thái thiết bị thành "đã tắt" một cách rõ ràng bằng cách gọi Devices.setState() với accountState được đặt thành "đã tắt". Điều này có thể là do các vấn đề về bảo mật, hành động quản trị hoặc các lý do khác.
Ý định này bao gồm một mã trạng thái, chẳng hạn như "ThirdPartyDeviceManagementRequired".
DPC tuỳ chỉnh PHẢI triển khai một BroadcastReceiver để theo dõi Ý định BAD_DEVICE_MANAGEMENT này.
Khi nhận được thông báo này, DPC phải:
- Đánh giá lại việc tuân thủ: Kiểm tra xem thiết bị có đáp ứng tất cả các chính sách do EMM đặt ra hay không.
- Hành động:
- Nếu tuân thủ: DPC phải thông báo cho máy chủ EMM. Sau đó, máy chủ EMM sẽ gọi
Devices.setState()vớiaccountStateđược đặt thành"enabled"cho mã nhận dạng người dùng và mã nhận dạng thiết bị cụ thể để cố gắng khôi phục quyền truy cập vào dịch vụ. - Nếu không tuân thủ: Sau khi các vấn đề được giải quyết và thiết bị tuân thủ, EMM sẽ gọi
Devices.setState().
- Nếu tuân thủ: DPC phải thông báo cho máy chủ EMM. Sau đó, máy chủ EMM sẽ gọi
Cơ chế này đảm bảo rằng có cách để phát hiện và khôi phục trong trường hợp thiết bị mất quyền truy cập vào các dịch vụ của Google.
Những điểm cần cân nhắc khi tiếp quản doanh nghiệp
Có thể xảy ra trường hợp thay đổi loại tài khoản của tổ chức (ví dụ: từ ManagedGoogleDomainType.TYPE_TEAM sang ManagedGoogleDomainType.TYPE_DOMAIN). Mặc dù quy trình này thường không làm gián đoạn mối liên kết EMM, nhưng đôi khi quy trình này có thể làm gián đoạn quyền truy cập vào dịch vụ của Google trên thiết bị.
EMM cần lưu ý rằng nếu người dùng báo cáo các vấn đề về quyền truy cập vào dịch vụ sau một sự kiện tiếp quản đã biết, ngay cả khi thiết bị có vẻ tuân thủ các chính sách của EMM, thì bạn có thể cần gọi Devices.setState() để đồng bộ hoá lại trạng thái của thiết bị với các máy chủ phụ trợ của Google theo cấu trúc khách hàng mới. Bạn thường không cần chủ động gọi cho tất cả các thiết bị sau khi tiếp quản, nhưng đây là một công cụ quan trọng để giải quyết các vấn đề về quyền truy cập.
Thiết lập tài khoản – mã mẫu
Để bắt đầu một lần thử thiết lập tài khoản, ứng dụng gọi điện có thể sử dụng
AccountSetupClientvà gọi phương thứcstartAccountSetup()hoặcstartAccountSetupFuture(). Để xem ví dụ về cách triển khai, hãy xem đoạn mã mẫu sau:// Create AccountSetupClient val client = AccountSetupClientFactory.create( this, activityResultRegistry ) lifecycle.addObserver(client.lifecycleObserver) // Create adminComponent val notificationReceiver = ComponentName(this, AccountSetupNotificationReceiver::class.java) // Helper method to get enrollment token created with Play EMM API val enrollmentToken = getEnrollmentToken() val request = StartAccountSetupRequest.builder() .setEnrollmentToken(enteredText) .setNotificationReceiverServiceComponentName(notificationReceiver) .setAdminComponentName( ComponentName(this, com.example.dpc.DeviceAdminReceiver::class.java)) .build() try { val accountSetupAttempt = client.startAccountSetup(request) // handle attempt } catch (e: Exception) { // handle exception }Triển khai giao diện
AccountSetupListenervà cung cấp một cách triển khai để xử lý các thông tin cập nhật trạng thái đã nhận.Mở rộng
NotificationReceiverServicevà cung cấp thực thểAccountSetupListenerđược tạo ở bước 2 bằng cách ghi đègetAccountSetupListener().// Handles account setup changes class AccountSetupNotificationReceiver : NotificationReceiverService(), AccountSetupListener { override fun getAccountSetupListener(): AccountSetupListener = this override fun onAccountSetupChanged(accountSetupAttempt: AccountSetupAttempt) { when (accountSetupAttempt.state.kind) { StateCase.ADDED_ACCOUNT -> { val enterpriseAccount = state.addedAccount() val userId = enterpriseAccount.userId val deviceId = enterpriseAccount.deviceId // Handle account added state. // IMPORTANT: The device/account is now added but *DISABLED* // for Google services. Your EMM backend MUST be notified to // perform policy compliance checks and then call Devices.setState() // to activate Google Play and other services. } StateCase.AUTHENTICATION_ACTIVITY_LAUNCH_REQUIRED -> { val request = LaunchAuthenticationActivityRequest.builder() .setAccountSetupAttempt(accountSetupAttempt) .build(); // Send the attempt to the foreground activity to call: accountSetupClient.launchAuthenticationActivity(request) } StateCase.ACCOUNT_SETUP_ERROR -> { // Handle error state. val failureReason = state.accountSetupError().failureReason } else -> { // Handle unknown account setup attempt state. } } } }Thêm lớp
NotificationReceiverServicemở rộng vàoAndroidManifest.xmlvà xác minh rằng lớp đó đã được xuất.<application> <service android:name = ".accountsetup.AccountSetupNotificationReceiver" android:exported = "true" /> </application>Nếu ứng dụng của bạn nhắm đến SDK 30 trở lên, thì bạn cần có một phần tử truy vấn trong
AndroidManifest.xmlđể chỉ định rằng ứng dụng sẽ tương tác với ADP.<queries> <package android:name="com.google.android.apps.work.clouddpc" /> </queries>
Hướng dẫn kiểm thử
Phần này cung cấp một bộ nguyên tắc và các phương pháp hay nhất để kiểm thử việc triển khai của bạn.
Thử nghiệm PrepareEnvironment
Lấy trạng thái hiện tại của thiết bị: EMM chạy
adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionNameđể lấy phiên bản Android Device Policy có trên thiết bị. Nếu bạn chưa cài đặt Chính sách thiết bị Android, thì hệ thống sẽ trả về một đầu ra trống.
Tích hợp PrepareEnvironment: DPC tuỳ chỉnh sẽ gọi API
prepareEnvironmenttrong AMAPI SDK, truyền yêu cầu chính xác.Chờ kết quả PrepareEnvironment: DPC tuỳ chỉnh sẽ chờ
prepareEnvironmenthoàn tất.Xác nhận thành công PrepareEnvironment: Sau khi hoàn tất, EMM sẽ chạy lại
adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionNameLần này, phiên bản Chính sách thiết bị Android phải cao hơn phiên bản ở bước 1.
Kiểm thử quy trình xác thực Tài khoản Google
- Tạo doanh nghiệp thử nghiệm: EMM tạo một miền thử nghiệm cho doanh nghiệp trên Google được liên kết với một EMM thử nghiệm, có
enterprises.generateSignupUrl. - Bật tính năng xác thực bằng Google: EMM cho phép xác thực bằng Google cho doanh nghiệp thử nghiệm theo các hướng dẫn này trong Bảng điều khiển dành cho quản trị viên của Google.
- Tạo mã thông báo đăng ký: EMM tạo mã thông báo đăng ký bằng Play EMM API có loại userDevice.
- Bắt đầu đăng ký: DPC tuỳ chỉnh sẽ gọi API
startAccountSetuptrong AMAPI SDK, truyền mã thông báo đăng ký. - Cần có hoạt động khởi chạy: AMAPI SDK thông báo cho DPC tuỳ chỉnh rằng một hoạt động phải được khởi chạy để xác thực người dùng.
- Xác thực người dùng: DPC tuỳ chỉnh sẽ gọi
launchAuthenticationActivityđể bắt đầu hoạt động. Người dùng xác thực bằng Tài khoản Google được quản lý (thuộc doanh nghiệp được tạo ở bước 1). - Hoàn tất quy trình đăng ký: AMAPI SDK sẽ thông báo cho DPC tuỳ chỉnh về kết quả đăng ký.
Thử bỏ qua bước xác thực bằng Google
Chúng tôi sẽ sử dụng chế độ thiết lập như mô tả trước đó.
Lần này, ở bước 7, người dùng nhấn vào Bỏ qua thay vì xác thực bằng Tài khoản Google của họ. Quá trình đăng ký hoàn tất thành công, với một tài khoản dịch vụ trên thiết bị (tức là AuthenticationType là Anonymous).
Kiểm thử các thiết bị không có người dùng
Quy trình đăng ký DPC tuỳ chỉnh được cải tiến sẽ sử dụng các bước sau khi tắt tính năng xác thực của Google:
- Tạo một doanh nghiệp kiểm thử: Đây có thể là doanh nghiệp giống như doanh nghiệp bạn đã tạo trước đó.
- Tạo mã thông báo đăng ký: EMM tạo một mã thông báo đăng ký bằng Play EMM API có loại userlessDevice.
- Bắt đầu đăng ký: DPC tuỳ chỉnh sẽ gọi API
startAccountSetuptrong AMAPI SDK, truyền mã thông báo đăng ký. - Hoàn tất quy trình đăng ký: AMAPI SDK sẽ thông báo cho DPC tuỳ chỉnh về kết quả đăng ký.