Ada dua jenis identitas pengguna utama untuk pendaftaran Android Enterprise: Akun Google Play terkelola dan Akun Google Terkelola. Akun Google Play terkelola berfokus pada perangkat, yang berarti akun tersebut tidak terikat dengan identitas Google pengguna tertentu. Sebaliknya, Akun Google Terkelola ditautkan ke identitas Google perusahaan pengguna, yang meningkatkan pengalaman pengguna dengan membuat mereka tetap login di perangkat mereka.
Akun Google Play terkelola dulunya merupakan standar. Namun, Google kini mendorong semua pengembangan baru untuk menggunakan alur pendaftaran yang ditingkatkan, yang secara default membuat Akun Google Terkelola.
Meskipun panduan untuk penerapan yang lebih lama diberikan di akhir dokumen ini untuk konteks, semua pengembangan baru harus mengikuti alur pendaftaran baru yang dijelaskan di sini.
Ringkasan
Alur pendaftaran perangkat yang ditingkatkan menyederhanakan penyiapan perangkat dengan memanfaatkan beberapa komponen baru dan mengubah cara penerapan Pengontrol Kebijakan Perangkat (DPC) kustom. Pendekatan baru ini memerlukan solusi DPC kustom untuk berintegrasi dengan Android Management API (AMAPI) SDK dan Android Device Policy untuk menjalankan fungsi penyiapan perangkat dan pendaftaran pengguna.
SDK AMAPI menyediakan API yang diperlukan untuk berinteraksi dengan Kebijakan Perangkat Android di perangkat itu sendiri. Di sisi server, solusi Pengelolaan Mobilitas Perusahaan (EMM) akan menggunakan Play EMM API untuk membuat token pendaftaran yang diperlukan untuk memulai proses pendaftaran perangkat.
Aplikasi Android Device Policy kini memegang peran sentral dalam menangani operasi sisi perangkat. SDK AMAPI digunakan untuk mengelola penginstalannya dan update yang diperlukan di perangkat. Android Device Policy juga mengambil alih alur autentikasi pengguna, menangani autentikasi pengguna secara langsung, dan memberikan identitas pengguna ke EMM. Jika Google tidak dapat mengautentikasi pengguna karena alasan apa pun, akun Google Play terkelola baru akan dibuat dan ditambahkan ke perangkat sebagai pengganti.
Bagian penting dari alur pendaftaran baru ini adalah mengelola akses perangkat ke layanan Google. Secara default, perangkat dimulai dalam status terbatas, dan EMM memainkan peran penting dalam mengaktifkan akses setelah perangkat mematuhi kebijakan.
Integrasi API
Sebelum memulai, pastikan Anda menggunakan klien Play EMM API dan AMAPI SDK versi terbaru.
Panduan penerapan pendaftaran
Panduan ini memberikan langkah-langkah yang diperlukan untuk menerapkan pendaftaran. Bagian ini mencakup penyiapan lingkungan, penanganan berbagai metode pendaftaran, dan pengelolaan siklus proses perangkat.
Siapkan lingkungan
Sebelum memulai penyiapan akun, Anda harus menyiapkan lingkungan perangkat. Persiapan ini mencakup mengupdate Play Store ke iterasi terbarunya dan menginstal Android Device Policy (com.google.android.apps.work.clouddpc) secara diam-diam ke perangkat. Penginstalan Android Device Policy sangat penting karena aplikasi ini menyimpan komponen penting dari proses Penyiapan Akun. EMM tidak perlu melakukan persiapan lingkungan secara manual. Sebagai gantinya, mereka
harus menggunakan
EnvironmentClient,
seperti yang didokumentasikan di dan mematuhi contoh kode yang diberikan.
Kode contoh
Sebelum dapat menggunakan AccountSetup API untuk menambahkan akun kerja di perangkat, DPC harus memverifikasi terlebih dahulu bahwa lingkungan perangkat sudah siap.
Gunakan
EnvironmentClientFactoryuntuk membuat instanceEnvironmentClientdan memanggilprepareEnvironmentatauprepareEnvironmentAsyncval 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]
Operasi ini dapat memerlukan waktu beberapa detik atau menit, karena aplikasi mungkin diinstal atau diupdate untuk memverifikasi lingkungan kerja yang tepat. Google merekomendasikan memulai proses ini sedini mungkin di latar belakang dan menampilkan UI yang sesuai saat pengguna menunggu. Setelah operasi selesai, perangkat siap digunakan DPC untuk menggunakan AccountSetup API.
Alur pendaftaran
EMM harus berhenti menggunakan users.generateAuthenticationToken() dan users.insert() untuk semua perangkat. Sebagai gantinya, EMM harus memanggil API di perangkat
untuk melakukan autentikasi pengguna akhir. API baru akan menampilkan userId dan
email ke DPC. Jika Google tidak dapat mengautentikasi pengguna, Akun Google Play Terkelola akan dibuat dan ditambahkan ke perangkat. Dalam kasus ini, Google akan menampilkan userId akun tersebut.
Google kini memperkenalkan penggunaan token pendaftaran, yang harus diteruskan ke API autentikasi. EMM menentukan kapan dan bagaimana cara membuat token, dan token tersebut dapat menjadi bagian dari payload pendaftaran yang ada (misalnya, kode QR atau konfigurasi Zero-touch).
Namun, Google merekomendasikan pembuatan token sesuai permintaan dan penggantian API yang ada untuk Akun Google Play Terkelola dengan API baru untuk meminimalkan perubahan.
Alur pendaftaran DPC kustom yang ditingkatkan melibatkan langkah-langkah berikut:
Status Awal Perangkat yang Penting: Saat mendaftarkan perangkat dengan DPC kustom, Akun Google yang ditambahkan ke perangkat dimulai dalam status dinonaktifkan. Artinya, akses ke layanan Google, termasuk Google Play, awalnya dibatasi.
Status "dinonaktifkan" default ini dan persyaratan berikutnya bagi EMM untuk menandai perangkat sebagai mematuhi kebijakan (misalnya, dengan memanggil Devices.SetState) secara khusus berlaku dalam kondisi berikut:
- Organisasi telah memverifikasi kepemilikan domainnya dengan Google.
- Admin IT telah secara eksplisit mengaktifkan pengelolaan seluler Android pihak ketiga untuk Unit Organisasi (OU) tertentu pengguna dalam konsol Google Admin.
- Buat Token Pendaftaran: EMM membuat token pendaftaran menggunakan Play EMM API.
- Siapkan Lingkungan: DPC kustom menggunakan alur Siapkan Lingkungan untuk memverifikasi bahwa perangkat siap untuk pendaftaran.
- Mulai Pendaftaran: DPC kustom memanggil
startAccountSetupAPI di AMAPI SDK, dengan meneruskan token pendaftaran. Catatan: DPC harus berupa pemilik perangkat atau pemilik profil sebelum memanggil API ini. - Luncurkan aktivitas autentikasi Google: Jika diperlukan, DPC kustom
memanggil
launchAuthenticationActivityAPI di AMAPI SDK, dengan meneruskanAccountSetupAttempt. Tindakan ini memulai aktivitas autentikasi Google, mengembalikan pengguna ke DPC kustom setelah autentikasi berhasil. Pengguna juga dapat melewati proses ini. Dalam hal ini, akun Google Play Terkelola akan ditambahkan ke perangkat. Opsi ini dapat dikonfigurasi menggunakangoogleAuthenticationOptions. - Menyelesaikan Pendaftaran: AMAPI SDK memberi tahu DPC kustom tentang hasil pendaftaran.
Aktifkan layanan Google: Setelah DPC kustom sepenuhnya menyediakan perangkat dan mengonfirmasi bahwa perangkat mematuhi semua kebijakan perusahaan, server EMM harus memanggil
Devices.setState()dengan parameteraccountStatedisetel ke"enabled".- Mengapa hal ini penting: Panggilan API ini menandai perangkat sebagai mematuhi kebijakan.
- Konsekuensi jika tidak melakukan panggilan: Tanpa panggilan
Devices.setState(setStateRequest)ini, akun akan tetap dalam status "dinonaktifkan". Pengguna tidak akan dapat mengakses Google Play (untuk menginstal atau mengupdate aplikasi) dan layanan Google lainnya yang memerlukan autentikasi akun.
Mengelola Status Perangkat dan Akses Layanan
Setelah pendaftaran awal, EMM bertanggung jawab untuk mempertahankan akses perangkat ke layanan Google berdasarkan status kepatuhannya.
Menangani Gangguan Layanan: BAD_DEVICE_MANAGEMENT
Jika akses perangkat ke layanan Google diblokir, layanan Google Play (GMSCore) akan menyiarkan Intent dengan tindakan: com.google.android.gms.auth.BAD_DEVICE_MANAGEMENT. Hal ini dapat terjadi karena beberapa alasan:
- EMM tidak pernah memanggil Devices.setState("enabled") setelah pendaftaran perangkat awal.
- Perangkat tidak lagi mematuhi kebijakan EMM, dan EMM belum mengaktifkannya kembali.
- EMM secara eksplisit menyetel status perangkat ke "dinonaktifkan" dengan memanggil Devices.setState() dengan accountState disetel ke "dinonaktifkan". Hal ini mungkin disebabkan oleh masalah keamanan, tindakan administratif, atau alasan lainnya.
Intent ini mencakup kode status, seperti "ThirdPartyDeviceManagementRequired".
DPC kustom HARUS menerapkan BroadcastReceiver untuk memproses Intent BAD_DEVICE_MANAGEMENT ini.
Setelah menerima siaran ini, DPC harus:
- Menilai Ulang Kepatuhan: Periksa apakah perangkat saat ini memenuhi semua kebijakan yang ditetapkan oleh EMM.
- Ambil Tindakan:
- Jika Mematuhi: DPC harus memberi tahu server EMM. Server EMM kemudian harus memanggil
Devices.setState()denganaccountStatedisetel ke"enabled"untuk ID pengguna dan ID perangkat tertentu guna mencoba memulihkan akses layanan. - Jika Tidak Sesuai: Setelah masalah diselesaikan, dan perangkat sesuai, EMM harus memanggil
Devices.setState().
- Jika Mematuhi: DPC harus memberi tahu server EMM. Server EMM kemudian harus memanggil
Mekanisme ini memastikan bahwa ada cara untuk mendeteksi dan memulihkan dari situasi saat perangkat kehilangan akses ke layanan Google.
Pertimbangan Pengambilalihan Perusahaan
Perubahan jenis akun organisasi (misalnya, dari ManagedGoogleDomainType.TYPE_TEAM menjadi ManagedGoogleDomainType.TYPE_DOMAIN) dapat terjadi. Meskipun proses ini biasanya tidak merusak pengikatan EMM, terkadang proses ini dapat mengganggu akses layanan Google di perangkat.
EMM harus menyadari bahwa jika pengguna melaporkan masalah akses layanan setelah peristiwa pengambilalihan yang diketahui, meskipun perangkat tampak mematuhi kebijakan EMM, panggilan ke Devices.setState() mungkin diperlukan untuk menyinkronkan ulang status perangkat dengan backend Google dalam struktur pelanggan baru. Panggilan proaktif untuk semua perangkat setelah pengambilalihan umumnya tidak diperlukan, tetapi merupakan alat utama untuk menyelesaikan masalah akses.
Penyiapan Akun - kode contoh
Untuk memulai upaya penyiapan akun, aplikasi yang memanggil dapat menggunakan
AccountSetupClientdan memanggil metodestartAccountSetup()ataustartAccountSetupFuture(). Untuk contoh penerapan, lihat contoh kode berikut:// 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 }Terapkan antarmuka
AccountSetupListenerdan berikan implementasi tentang cara menangani update status yang diterima.Perluas
NotificationReceiverServicedan berikan instanceAccountSetupListeneryang dibuat pada langkah 2 dengan menggantigetAccountSetupListener().// 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. } } } }Tambahkan class
NotificationReceiverServiceyang diperluas keAndroidManifest.xmlAnda dan verifikasi bahwa class tersebut diekspor.<application> <service android:name = ".accountsetup.AccountSetupNotificationReceiver" android:exported = "true" /> </application>Jika aplikasi Anda menargetkan SDK 30 atau yang lebih baru, elemen kueri diperlukan di
AndroidManifest.xmluntuk menentukan bahwa aplikasi akan berinteraksi dengan ADP.<queries> <package android:name="com.google.android.apps.work.clouddpc" /> </queries>
Panduan pengujian
Bagian ini memberikan serangkaian pedoman dan praktik terbaik untuk menguji penerapan Anda.
Uji PrepareEnvironment
Mendapatkan Status Perangkat Saat Ini: EMM berjalan
adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionNameuntuk mendapatkan versi Android Device Policy yang ada di perangkat. Jika Kebijakan Perangkat Android tidak diinstal, output kosong akan ditampilkan.
Mengintegrasikan PrepareEnvironment: DPC kustom memanggil API
prepareEnvironmentdi AMAPI SDK, dengan meneruskan permintaan yang benar.Menunggu hasil PrepareEnvironment: DPC kustom menunggu
prepareEnvironmentselesai.Konfirmasi keberhasilan PrepareEnvironment: Setelah selesai, EMM akan berjalan lagi
adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionNameKali ini, versi Kebijakan Perangkat Android harus lebih tinggi daripada di langkah 1.
Menguji autentikasi Akun Google
- Membuat perusahaan pengujian: EMM membuat perusahaan Google domain pengujian
yang ditautkan ke EMM pengujian, dengan
enterprises.generateSignupUrl. - Aktifkan autentikasi Google: EMM mengaktifkan autentikasi Google untuk perusahaan pengujian dengan mengikuti petunjuk ini di konsol Google Admin.
- Buat Token Pendaftaran: EMM membuat token pendaftaran menggunakan Play EMM API dengan jenis userDevice.
- Mulai Pendaftaran: DPC kustom memanggil
startAccountSetupAPI di AMAPI SDK, dengan meneruskan token pendaftaran. - Peluncuran aktivitas diperlukan: AMAPI SDK memberi tahu DPC kustom bahwa aktivitas harus diluncurkan untuk mengautentikasi pengguna.
- Mengautentikasi pengguna: DPC kustom memanggil
launchAuthenticationActivityuntuk memulai aktivitas. Pengguna melakukan autentikasi dengan Akun Google Terkelola (bagian dari perusahaan yang dibuat pada langkah 1). - Menyelesaikan Pendaftaran: AMAPI SDK memberi tahu DPC kustom tentang hasil pendaftaran.
Menguji melewati autentikasi Google
Kita akan menggunakan penyiapan yang dijelaskan sebelumnya.
Kali ini, pada langkah 7, pengguna menekan Lewati, bukan melakukan autentikasi dengan Akun Google-nya. Pendaftaran berhasil diselesaikan, dengan akun layanan di perangkat (yaitu,
AuthenticationType
bersifat Anonim).
Menguji perangkat tanpa pengguna
Alur pendaftaran DPC kustom yang ditingkatkan menggunakan langkah-langkah berikut, saat autentikasi Google dinonaktifkan:
- Buat perusahaan pengujian: Perusahaan ini dapat berupa perusahaan yang sama dengan yang dibuat sebelumnya.
- Buat Token Pendaftaran: EMM membuat token pendaftaran menggunakan Play EMM API dengan jenis userlessDevice.
- Mulai Pendaftaran: DPC kustom memanggil
startAccountSetupAPI di AMAPI SDK, dengan meneruskan token pendaftaran. - Menyelesaikan Pendaftaran: AMAPI SDK memberi tahu DPC kustom tentang hasil pendaftaran.