Menerapkan akun pengguna

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 membuatnya tetap login di perangkatnya.

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.

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. Panduan 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 EnvironmentClientFactory untuk membuat instance EnvironmentClient dan memanggil prepareEnvironment atau prepareEnvironmentAsync

    val 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 untuk memulai proses ini sedini mungkin di latar belakang dan menampilkan UI yang sesuai saat pengguna menunggu. Setelah operasi selesai, perangkat siap digunakan oleh 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 hal 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.

Integrasi DPC umum dengan API sebelumnya
Gambar 1. Integrasi DPC umum dengan API sebelumnya
Contoh integrasi DPC dengan API baru untuk perangkat tanpa pengguna
Gambar 2. Contoh integrasi DPC dengan API baru untuk perangkat tanpa pengguna
Contoh integrasi DPC dengan API baru untuk perangkat pengguna
Gambar 3. Contoh integrasi DPC dengan API baru untuk perangkat pengguna

Alur pendaftaran DPC kustom yang ditingkatkan melibatkan langkah-langkah berikut:

  1. Buat Token Pendaftaran: EMM membuat token pendaftaran menggunakan Play EMM API.
  2. Siapkan Lingkungan: DPC kustom menggunakan alur Siapkan Lingkungan untuk memverifikasi bahwa perangkat siap untuk pendaftaran.
  3. Mulai Pendaftaran: DPC kustom memanggil startAccountSetup API di SDK AMAPI, dengan meneruskan token pendaftaran. Catatan: DPC harus berupa pemilik perangkat atau pemilik profil sebelum memanggil API ini.
  4. Luncurkan aktivitas autentikasi Google: Jika diperlukan, DPC kustom memanggil launchAuthenticationActivity API di AMAPI SDK, dengan meneruskan AccountSetupAttempt. 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 menggunakan googleAuthenticationOptions.
  5. Menyelesaikan Pendaftaran: AMAPI SDK memberi tahu DPC kustom tentang hasil pendaftaran.
  6. Aktifkan layanan Google: Setelah perangkat pengguna dengan Akun Google Terkelola mematuhi kebijakan perusahaan, EMM harus memanggil Devices.setState(). Tindakan ini memungkinkan akses ke layanan Google untuk akun di perangkat. Tanpa panggilan ini, Play Store dan layanan Google lainnya tidak akan berfungsi.

Penyiapan Akun - kode contoh

  1. Untuk memulai upaya penyiapan akun, aplikasi yang memanggil dapat menggunakan AccountSetupClient dan memanggil metode startAccountSetup() atau startAccountSetupFuture(). 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
    }
      ```
    
  2. Terapkan antarmuka AccountSetupListener dan berikan implementasi tentang cara menangani update status yang diterima.

  3. Perluas NotificationReceiverService dan berikan instance AccountSetupListener yang dibuat pada langkah 2 dengan mengganti 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.
    
                }
                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.
                }
            }
        }
    }
    
      ```
    
  4. Tambahkan class NotificationReceiverService yang diperluas ke AndroidManifest.xml Anda 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.xml untuk menentukan bahwa aplikasi akan berinteraksi dengan ADP.

      <queries>
        <package android:name="com.google.android.apps.work.clouddpc" />
      </queries>
    

Panduan pengujian

Bagian ini memberikan serangkaian panduan dan praktik terbaik untuk menguji penerapan Anda.

Uji PrepareEnvironment

  1. Mendapatkan Status Perangkat Saat Ini: EMM berjalan

    adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
    

    untuk mendapatkan versi Android Device Policy yang ada di perangkat. Jika Kebijakan Perangkat Android tidak diinstal, output kosong akan ditampilkan.

  2. Mengintegrasikan PrepareEnvironment: DPC kustom memanggil API prepareEnvironment di AMAPI SDK, dengan meneruskan permintaan yang benar.

  3. Menunggu hasil PrepareEnvironment: DPC kustom menunggu prepareEnvironment selesai.

  4. Konfirmasi keberhasilan PrepareEnvironment: Setelah selesai, EMM akan berjalan lagi

    adb shell dumpsys package com.google.android.apps.work.clouddpc | grep versionName
    

    Kali ini, versi Kebijakan Perangkat Android harus lebih tinggi daripada di langkah 1.

Menguji autentikasi Akun Google

  1. Membuat perusahaan pengujian: EMM membuat perusahaan Google domain pengujian yang ditautkan ke EMM pengujian, dengan enterprises.generateSignupUrl.
  2. Aktifkan autentikasi Google: EMM mengaktifkan autentikasi Google untuk perusahaan pengujian dengan mengikuti petunjuk ini di konsol Google Admin.
  3. Buat Token Pendaftaran: EMM membuat token pendaftaran menggunakan Play EMM API dengan jenis userDevice.
  4. Mulai Pendaftaran: DPC kustom memanggil startAccountSetup API di SDK AMAPI, dengan meneruskan token pendaftaran.
  5. Peluncuran aktivitas diperlukan: AMAPI SDK memberi tahu DPC kustom bahwa aktivitas harus diluncurkan untuk mengautentikasi pengguna.
  6. Mengautentikasi pengguna: DPC kustom memanggil launchAuthenticationActivity untuk memulai aktivitas. Pengguna melakukan autentikasi dengan Akun Google Terkelola (bagian dari perusahaan yang dibuat pada langkah 1).
  7. 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 mereka. 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:

  1. Buat perusahaan pengujian: Perusahaan ini dapat berupa perusahaan yang sama dengan yang dibuat sebelumnya.
  2. Buat Token Pendaftaran: EMM membuat token pendaftaran menggunakan Play EMM API dengan jenis userlessDevice.
  3. Mulai Pendaftaran: DPC kustom memanggil startAccountSetup API di SDK AMAPI, dengan meneruskan token pendaftaran.
  4. Menyelesaikan Pendaftaran: AMAPI SDK memberi tahu DPC kustom tentang hasil pendaftaran.