Bagikan melalui


Tutorial: Menyiapkan aplikasi ponsel Android Anda untuk autentikasi asli

Tutorial ini menunjukkan cara menambahkan SDK autentikasi asli Microsoft Authentication Library (MSAL) ke aplikasi seluler Android.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Tambahkan dependensi MSAL.
  • Membuat file konfigurasi.
  • Buat instans MSAL SDK.

Prasyarat

Menambahkan dependensi MSAL

  1. Buka proyek Anda di Android Studio atau buat proyek baru.

  2. Buka aplikasi build.gradle Anda dan tambahkan dependensi berikut:

    allprojects {
        repositories {
            //Needed for com.microsoft.device.display:display-mask library
            maven {
                url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1'
                name 'Duo-SDK-Feed'
            }
            mavenCentral()
            google()
        }
    }
    //...
    
    dependencies { 
        implementation 'com.microsoft.identity.client:msal:5.+'
        //...
    }
    
  3. Di Android Studio, pilih File>Sync Project dengan Gradle Files.

Membuat file konfigurasi

Anda meneruskan pengidentifikasi penyewa yang diperlukan, seperti ID aplikasi (klien), ke MSAL SDK melalui pengaturan konfigurasi JSON.

Gunakan langkah-langkah ini untuk membuat file konfigurasi:

  1. Di panel proyek Android Studio, buka app\src\main\res.

  2. Klik kanan res dan pilih Direktori Baru>. Masukkan raw sebagai nama direktori baru dan pilih OK.

  3. Di app\src\main\res\raw, buat file JSON baru yang disebut auth_config_native_auth.json.

  4. auth_config_native_auth.json Dalam file, tambahkan konfigurasi MSAL berikut:

    { 
      "client_id": "Enter_the_Application_Id_Here", 
      "authorities": [ 
        { 
          "type": "CIAM", 
          "authority_url": "https://Enter_the_Tenant_Subdomain_Here.ciamlogin.com/Enter_the_Tenant_Subdomain_Here.onmicrosoft.com/" 
        } 
      ], 
      "challenge_types": ["oob"], 
      "logging": { 
        "pii_enabled": false, 
        "log_level": "INFO", 
        "logcat_enabled": true 
      } 
    } 
     //...
    
  5. Ganti tempat penampung berikut dengan nilai penyewa yang Anda peroleh dari pusat admin Microsoft Entra:

    • Enter_the_Application_Id_Here Ganti tempat penampung dengan ID aplikasi (klien) aplikasi yang Anda daftarkan sebelumnya.
    • Enter_the_Tenant_Subdomain_Here Ganti dengan subdomain direktori (penyewa). Misalnya, jika domain utama penyewa Anda adalah contoso.onmicrosoft.com, gunakan contoso. Jika Anda tidak memiliki nama penyewa, pelajari cara membaca detail penyewa Anda.

    Jenis tantangan adalah daftar nilai, yang digunakan aplikasi untuk memberi tahu Microsoft Entra tentang metode autentikasi yang didukungnya.

    • Untuk alur pendaftaran dan masuk dengan kode akses satu kali email, gunakan ["oob"].
    • Untuk alur pendaftaran dan masuk dengan email dan kata sandi, gunakan ["oob","password"].
    • Untuk pengaturan ulang kata sandi mandiri (SSPR), gunakan ["oob"].

    Pelajari lebih lanjut jenis tantangan.

Opsional: Konfigurasi pengelogan

Aktifkan pengelogan pada pembuatan aplikasi dengan membuat panggilan balik pengelogan, sehingga SDK dapat menghasilkan log.

import com.microsoft.identity.client.Logger

fun initialize(context: Context) {
        Logger.getInstance().setExternalLogger { tag, logLevel, message, containsPII ->
            Logs.append("$tag $logLevel $message")
        }
    }

Untuk mengonfigurasi pencatat, Anda perlu menambahkan bagian dalam file konfigurasi, auth_config_native_auth.json:

    //...
   { 
     "logging": { 
       "pii_enabled": false, 
       "log_level": "INFO", 
       "logcat_enabled": true 
     } 
   } 
    //...
  1. logcat_enabled: Mengaktifkan fungsionalitas pengelogan pustaka.
  2. pii_enabled: Menentukan apakah pesan yang berisi data pribadi, atau data organisasi dicatat. Saat diatur ke false, log tidak akan berisi data pribadi. Ketika diatur ke true, log mungkin berisi data pribadi.
  3. log_level: Gunakan untuk memutuskan tingkat pengelogan mana yang akan diaktifkan. Android mendukung tingkat log berikut:
    1. KESALAHAN
    2. PERINGATAN
    3. INFO
    4. VERBOSE

Untuk informasi selengkapnya tentang pengelogan MSAL, lihat Pengelogan di MSAL untuk Android.

Membuat instans MSAL SDK autentikasi asli

Dalam metode , onCreate() buat instans MSAL sehingga aplikasi dapat melakukan autentikasi dengan penyewa Anda melalui autentikasi asli. Metode mengembalikan createNativeAuthPublicClientApplication() instans yang disebut authClient. Teruskan file konfigurasi JSON yang Anda buat sebelumnya sebagai parameter.

    //...
    authClient = PublicClientApplication.createNativeAuthPublicClientApplication( 
        this, 
        R.raw.auth_config_native_auth 
    )
    //...

Kode Anda akan terlihat mirip dengan cuplikan berikut:

    class MainActivity : AppCompatActivity() { 
        private lateinit var authClient: INativeAuthPublicClientApplication 
 
        override fun onCreate(savedInstanceState: Bundle?) { 
            super.onCreate(savedInstanceState) 
            setContentView(R.layout.activity_main) 
 
            authClient = PublicClientApplication.createNativeAuthPublicClientApplication( 
                this, 
                R.raw.auth_config_native_auth 
            ) 
            getAccountState() 
        } 
 
        private fun getAccountState() {
            CoroutineScope(Dispatchers.Main).launch {
                val accountResult = authClient.getCurrentAccount()
                when (accountResult) {
                    is GetAccountResult.AccountFound -> {
                        displaySignedInState(accountResult.resultValue)
                    }
                    is GetAccountResult.NoAccountFound -> {
                        displaySignedOutState()
                    }
                }
            }
        } 
 
        private fun displaySignedInState(accountState: AccountState) { 
            val accountName = accountResult.getAccount().username 
            val textView: TextView = findViewById(R.id.accountText) 
            textView.text = "Cached account found: $accountName" 
        } 
 
        private fun displaySignedOutState() { 
            val textView: TextView = findViewById(R.id.accountText) 
            textView.text = "No cached account found" 
        } 
    } 
  • Ambil akun cache dengan menggunakan getCurrentAccount(), yang mengembalikan objek, accountResult.
  • Jika akun ditemukan dalam persistensi, gunakan GetAccountResult.AccountFound untuk menampilkan status masuk.
  • Jika tidak, gunakan GetAccountResult.NoAccountFound untuk menampilkan status keluar.

Pastikan Anda menyertakan pernyataan impor. Android Studio harus menyertakan pernyataan impor untuk Anda secara otomatis.

Langkah selanjutnya