Bagikan melalui


Mode perangkat bersama untuk perangkat Android

Pekerja garis depan seperti rekan retail, kru penerbangan, dan pekerja layanan lapangan sering menggunakan perangkat seluler bersama untuk melakukan pekerjaan mereka. Perangkat bersama ini dapat menimbulkan risiko keamanan jika pengguna Anda membagikan kata sandi atau PIN mereka, dengan sengaja atau tidak, untuk mengakses data pelanggan dan bisnis di perangkat bersama.

Mode perangkat bersama memungkinkan Anda mengonfigurasi perangkat Android 8.0 atau yang lebih tinggi sehingga karyawan dapat berbagi perangkat dengan aman. Karyawan dapat masuk sekali dan mendapatkan akses menyeluruh (SSO) ke semua aplikasi yang mendukung fitur ini, memberi mereka akses informasi yang lebih cepat. Ketika karyawan keluar setelah menyelesaikan shift atau tugas mereka, mereka secara otomatis keluar dari perangkat dan semua aplikasi yang didukung, membuat perangkat siap untuk pengguna berikutnya.

Untuk memanfaatkan fitur Mode Perangkat Bersama, pengembang aplikasi dan administrator perangkat cloud bekerja sama:

  1. Administrator perangkat menyiapkan perangkat untuk dibagikan secara manual atau dengan menggunakan penyedia manajemen perangkat seluler (MDM) seperti Microsoft Intune. Opsi yang disukai adalah menggunakan MDM karena memungkinkan penyiapan perangkat dalam mode perangkat bersama dalam skala besar melalui provisi tanpa sentuhan. MDM mendorong aplikasi Microsoft Authenticator ke perangkat dan mengaktifkan "Mode Bersama" untuk setiap perangkat melalui pembaruan konfigurasi terkelola ke perangkat. Pengaturan Mode Bersama inilah yang mengubah perilaku aplikasi yang didukung di perangkat. Konfigurasi dari penyedia MDM ini mengatur mode perangkat bersama untuk perangkat dan memicu pendaftaran perangkat bersama menggunakan Aplikasi Authenticator.

  2. Pengembang aplikasi menulis aplikasi akun tunggal (aplikasi beberapa akun tidak didukung dalam mode perangkat bersama) untuk menangani skenario berikut:

    • Masuk ke seluruh perangkat pengguna melalui aplikasi apa pun yang didukung
    • Keluar dari seluruh perangkat pengguna melalui aplikasi apa pun yang didukung
    • Mengkueri status perangkat untuk menentukan apakah aplikasi Anda berada di perangkat yang berada dalam mode perangkat bersama
    • Mengkueri status perangkat pengguna untuk menentukan perubahan apa pun dalam aplikasi Anda sejak penggunaan terakhir

    Mode perangkat bersama yang didukung harus dianggap sebagai peningkatan fitur untuk aplikasi Anda, dan dapat membantu meningkatkan penerapannya di lingkungan tempat perangkat yang sama digunakan di antara banyak pengguna.

    Penting

    Aplikasi Microsoft yang mendukung mode perangkat bersama di Android tidak memerlukan perubahan apa pun dan hanya perlu diinstal pada perangkat untuk mendapatkan manfaat yang disertakan dengan mode perangkat bersama.

Menyiapkan perangkat dalam Mode Perangkat Bersama

Untuk mengonfigurasi perangkat Android Anda untuk mendukung mode perangkat bersama, perangkat harus menjalankan Android OS 8.0 atau yang lebih baru. Perangkat juga harus dihapus oleh pengaturan ulang pabrik atau memiliki semua aplikasi yang diaktifkan Microsoft dan mode perangkat bersama lainnya yang dihapus instalannya dan diinstal ulang.

Microsoft Intune mendukung provisi tanpa sentuhan untuk perangkat dalam mode perangkat bersama Microsoft Entra, yang berarti bahwa perangkat dapat disiapkan dan didaftarkan di Intune dengan interaksi minimal dari pekerja garis depan. Untuk menyiapkan perangkat dalam mode perangkat bersama saat menggunakan Microsoft Intune sebagai MDM, lihat Menyiapkan pendaftaran untuk perangkat dalam mode perangkat bersama Microsoft Entra.

Ubah aplikasi Android Anda untuk mendukung mode perangkat bersama

Pengguna bergantung pada Anda untuk memastikan data mereka tidak bocor ke pengguna lain. Bagian berikut memberikan sinyal berguna untuk menunjukkan kepada aplikasi Anda bahwa perubahan telah terjadi dan harus ditangani. Anda bertanggung jawab untuk memeriksa status pengguna di perangkat setiap kali aplikasi Anda digunakan, lalu menghapus data pengguna sebelumnya. Ini termasuk jika dimuat ulang dari latar belakang dalam multi-tugas. Saat perubahan pengguna, Anda harus memastikan data pengguna sebelumnya dihapus dan semua data cache yang ditampilkan di aplikasi dihapus. Kami menyarankan Anda dan perusahaan Anda melakukan proses peninjauan keamanan setelah memperbarui aplikasi untuk mendukung mode perangkat bersama.

Menambahkan Microsoft Authentication Library (MSAL) SDK ke dependensi aplikasi Anda

Tambahkan pustaka MSAL sebagai dependensi dalam file build.gradle Anda, seperti:

dependencies{
  implementation 'com.microsoft.identity.client.msal:5.+'
}

Mengonfigurasi aplikasi Anda untuk menggunakan mode perangkat bersama

Aplikasi yang ditulis menggunakan SDK Pustaka Autentikasi Microsoft (MSAL) dapat mengelola satu akun atau beberapa akun. Untuk detailnya, lihat mode akun tunggal atau mode beberapa akun. Aplikasi mode perangkat bersama hanya berfungsi dalam mode akun tunggal.

Jika Anda tidak berencana untuk mendukung mode beberapa akun, atur "account_mode" ke "SINGLE" dalam file konfigurasi msal Anda. Tindakan ini menjamin bahwa aplikasi Anda akan selalu mendapatkan ISingleAccountPublicClientApplication, dan secara signifikan menyederhanakan integrasi MSAL Anda. Nilai "account_mode" default adalah "MULTIPLE", jadi penting untuk mengubah nilai ini dalam file konfigurasi jika Anda menggunakan "single account" mode.

Berikut adalah contoh file konfigurasi:

{
  "client_id": "Client ID after app registration at https://aka.ms/MobileAppReg",
  "authorization_user_agent": "WEBVIEW",
  "redirect_uri": "Redirect URI after app registration at https://aka.ms/MobileAppReg",
  "account_mode": "SINGLE",
  "broker_redirect_uri_registered": true,
  "authorities": [
    {
      "type": "AAD",
      "audience": {
        "type": "AzureADandPersonalMicrosoftAccount",
        "tenant_id": "common"
      }
    }
  ]
}

Lihat dokumentasi konfigurasi untuk informasi selengkapnya tentang menyiapkan file konfigurasi Anda.

Mendukung akun tunggal dan beberapa akun

Aplikasi Anda dapat dibuat untuk mendukung berjalan di perangkat pribadi dan perangkat bersama. Jika saat ini aplikasi Anda mendukung beberapa akun dan ingin mendukung mode perangkat bersama, tambahkan dukungan untuk mode akun tunggal.

Anda mungkin juga ingin aplikasi Anda mengubah perilakunya tergantung jenis perangkat yang menjalankannya. Gunakan ISingleAccountPublicClientApplication.isSharedDevice() untuk menentukan kapan harus menjalankan mode akun tunggal.

Ada dua antarmuka berbeda yang melambangkan jenis perangkat yang digunakan aplikasi Anda. Ketika Anda meminta instans aplikasi dari pabrik aplikasi MSAL, objek aplikasi yang benar disediakan secara otomatis.

Model objek berikut mengilustrasikan jenis objek yang mungkin Anda terima dan apa artinya dalam konteks perangkat bersama:

model bawaan aplikasi klien publik

Anda perlu melakukan pemeriksaan jenis dan transmisi ke antarmuka yang sesuai saat Anda mendapatkan objek Anda PublicClientApplication . Kode berikut memeriksa beberapa mode akun atau mode akun tunggal, dan melemparkan objek aplikasi dengan tepat:

private IPublicClientApplication mApplication;

        // Running in personal-device mode?
        if (mApplication instanceOf IMultipleAccountPublicClientApplication) {
          IMultipleAccountPublicClientApplication multipleAccountApplication = (IMultipleAccountPublicClientApplication) mApplication;
          ...
        // Running in shared-device mode?
        } else if (mApplication instanceOf ISingleAccountPublicClientApplication) {
           ISingleAccountPublicClientApplication singleAccountApplication = (ISingleAccountPublicClientApplication) mApplication;
            ...
        }

Perbedaan berikut berlaku tergantung pada apakah aplikasi Anda berjalan di perangkat bersama atau pribadi:

Perangkat mode berbagi Perangkat pribadi
Account Akun tunggal Beberapa akun
Masuk Global Global
Keluar Global Setiap aplikasi dapat mengontrol apakah keluar bersifat lokal untuk aplikasi.
Jenis akun yang didukung Akun kantor saja Akun pribadi dan kantor didukung

Menginisialisasi objek PublicClientApplication

Jika mengatur "account_mode":"SINGLE" di file konfigurasi MSAL, Anda dapat dengan aman mentransmisikan objek aplikasi yang dikembalikan sebagai ISingleAccountPublicCLientApplication.

private ISingleAccountPublicClientApplication mSingleAccountApp;

PublicClientApplication.create(
    this.getApplicationCOntext(),
    R.raw.auth_config_single_account,
    new PublicClientApplication.ApplicationCreatedListener() {

        @Override
        public void onCreated(IPublicClientApplication application){
            mSingleAccountApp = (ISingleAccountPublicClientApplication)application;
        }

        @Override
        public void onError(MsalException exception){
            /*Fail to initialize PublicClientApplication */
        }
    });

Mendeteksi mode perangkat bersama

Mendeteksi mode perangkat bersama sangat penting untuk aplikasi Anda. Banyak aplikasi memerlukan perubahan dalam pengalaman pengguna (UX) mereka ketika aplikasi digunakan pada perangkat bersama. Contohnya, aplikasi Anda mungkin memiliki fitur "Daftar", yang tidak sesuai untuk pekerja garis depan karena mereka kemungkinan besar sudah memiliki akun. Anda mungkin juga ingin menambahkan keamanan ekstra ke penanganan data aplikasi jika berada dalam mode perangkat bersama.

Gunakan API isSharedDevice dalam IPublicClientApplication untuk menentukan jika aplikasi berjalan di perangkat yang berada dalam mode perangkat bersama.

Cuplikan kode berikut menunjukkan contoh penggunaan API isSharedDevice.

deviceModeTextView.setText(mSingleAccountApp.isSharedDevice() ? "Shared" : "Non-Shared");

Mendapatkan pengguna yang masuk dan menentukan apakah pengguna telah berubah di perangkat

Bagian penting lain dari mendukung mode perangkat bersama adalah menentukan status pengguna pada perangkat dan menghapus data aplikasi jika pengguna telah berubah atau jika tidak ada pengguna sama sekali di perangkat. Anda bertanggung jawab untuk memastikan data tidak bocor ke pengguna lain.

Anda dapat menggunakan API getCurrentAccountAsync untuk mengkueri akun yang sedang masuk di perangkat.

Metode loadAccount mengambil akun pengguna yang masuk. Metode onAccountChanged menentukan apakah pengguna yang masuk telah berubah, dan jika demikian, hapus:

private void loadAccount()
{
  mSingleAccountApp.getCurrentAccountAsync(new ISingleAccountPublicClientApplication.CurrentAccountCallback())
  {
    @Override
    public void onAccountLoaded(@Nullable IAccount activeAccount)
    {
      if (activeAccount != null)
      {
        signedInUser = activeAccount;
        final AcquireTokenSilentParameters silentParameters = new AcquireTokenSilentParameters.Builder()
                        .fromAuthority(signedInUser.getAuthority())
                        .forAccount(signedInUser)
                        .withScopes(Arrays.asList(getScopes()))
                        .withCallback(getAuthSilentCallback())
                        .build();
        mSingleAccountApp.acquireTokenSilentAsync(silentParameters);
      }
    }
    @Override
    public void onAccountChanged(@Nullable IAccount priorAccount, @Nullable Iaccount currentAccount)
    {
      if (currentAccount == null)
      {
        //Perform a cleanup task as the signed-in account changed.
        cleaUp();
      }
    }
    @Override
    public void onError(@NonNull Exception exception)
    {
        //getCurrentAccountAsync failed
    }
  }
}

Memasukkan pengguna secara global

Saat perangkat dikonfigurasi sebagai perangkat bersama, aplikasi Anda dapat memanggil API signIn untuk masuk ke akun. Akun akan tersedia secara global untuk semua aplikasi yang memenuhi syarat di perangkat setelah akun masuk ke aplikasi pertama.

final SignInParameters signInParameters = ... /* create SignInParameters object */
mSingleAccountApp.signIn(signInParameters);

Mengeluarkan pengguna secara global

Kode berikut ini akan menghapus akun yang masuk dan menghapus cache token tidak hanya dari aplikasi, tetapi juga dari perangkat yang berada dalam mode perangkat bersama. Namun, tidak menghapus data dari aplikasi Anda. Anda harus menghapus data dari aplikasi Anda, dan menghapus data cache apa pun yang mungkin ditampilkan aplikasi Anda kepada pengguna.

mSingleAccountApp.signOut(new ISingleAccountPublicClientApplication.SignOutCallback() {
    @Override
    public void onSignOut() {
        // clear data from your application
    }

    @Override
    public void onError(@NonNull MsalException exception) {
        // signout failed, show error
    }
});

Menerima siaran untuk mendeteksi keluar global yang dimulai dari aplikasi lain

Untuk menerima siaran perubahan akun, Anda perlu mendaftarkan penerima siaran. Disarankan untuk mendaftarkan penerima siaran Anda melalui penerima yang terdaftar konteks.

Saat siaran perubahan akun diterima, segera dapatkan pengguna yang masuk dan tentukan apakah pengguna telah berubah di perangkat. Jika perubahan terdeteksi, mulai pembersihan data untuk akun yang sebelumnya masuk. Disarankan untuk menghentikan operasi apa pun dengan benar dan melakukan pembersihan data.

Cuplikan kode berikut menunjukkan bagaimana Anda dapat mendaftarkan penerima siaran.

private static final String CURRENT_ACCOUNT_CHANGED_BROADCAST_IDENTIFIER = "com.microsoft.identity.client.sharedmode.CURRENT_ACCOUNT_CHANGED";
private BroadcastReceiver mAccountChangedBroadcastReceiver;
private void registerAccountChangeBroadcastReceiver(){
    mAccountChangedBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            //INVOKE YOUR PRIOR ACCOUNT CLEAN UP LOGIC HERE
        }
    };
    IntentFilter filter = new

    IntentFilter(CURRENT_ACCOUNT_CHANGED_BROADCAST_IDENTIFIER);
    this.registerReceiver(mAccountChangedBroadcastReceiver, filter);
}

Aplikasi Microsoft yang mendukung mode perangkat bersama

Aplikasi Microsoft ini mendukung mode perangkat bersama Microsoft Entra:

MDM pihak ketiga yang mendukung mode perangkat bersama

Penyedia Mobile Manajemen Perangkat (MDM) pihak ketiga ini mendukung mode perangkat bersama Microsoft Entra:

Rincian keluar perangkat bersama dan siklus hidup aplikasi keseluruhan

Saat pengguna keluar, Anda perlu mengambil tindakan untuk melindungi privasi dan data pengguna. Misalnya, jika Anda membuat aplikasi catatan medis, Anda ingin memastikan bahwa ketika pengguna keluar dari catatan pasien yang ditampilkan sebelumnya dihapus. Aplikasi Anda harus siap untuk privasi data dan periksa setiap kali memasuki latar depan.

Saat aplikasi Anda menggunakan MSAL untuk mengeluarkan pengguna di aplikasi yang berjalan di perangkat yang berada dalam mode bersama, akun masuk dan token cache akan dihapus dari aplikasi dan perangkat.

Diagram berikut menunjukkan siklus hidup aplikasi keseluruhan dan peristiwa umum yang mungkin terjadi saat aplikasi Anda berjalan. Diagram mencakup sejak peluncuran aktivitas, masuk dan keluar dari akun, dan bagaimana peristiwa seperti menjeda, dilanjutkan, dan menghentikan aktivitas yang pas.

Siklus hidup aplikasi perangkat bersama

Langkah berikutnya

Siapkan perangkat Android untuk menjalankan aplikasi dalam mode perangkat bersama dan menguji aplikasi Anda.

Mode perangkat bersama untuk perangkat Android