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
- Jika Anda belum melakukannya, ikuti instruksi di Memasukkan pengguna dalam sampel aplikasi seluler Android (Kotlin) dengan menggunakan autentikasi asli dan mendaftarkan aplikasi di penyewa eksternal Anda. Pastikan Anda menyelesaikan langkah-langkah berikut:
- Daftarkan aplikasi.
- Aktifkan klien publik dan alur autentikasi asli.
- Berikan izin API.
- Membuat alur pengguna.
- Kaitkan aplikasi dengan alur pengguna.
- Proyek Android. Jika Anda tidak memiliki proyek Android, buatlah.
Menambahkan dependensi MSAL
Buka proyek Anda di Android Studio atau buat proyek baru.
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.+' //... }
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:
Di panel proyek Android Studio, buka app\src\main\res.
Klik kanan res dan pilih Direktori Baru>. Masukkan
raw
sebagai nama direktori baru dan pilih OK.Di app\src\main\res\raw, buat file JSON baru yang disebut
auth_config_native_auth.json
.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 } } //...
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 adalahcontoso.onmicrosoft.com
, gunakancontoso
. 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
}
}
//...
- logcat_enabled: Mengaktifkan fungsionalitas pengelogan pustaka.
- 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.
- log_level: Gunakan untuk memutuskan tingkat pengelogan mana yang akan diaktifkan. Android mendukung tingkat log berikut:
- KESALAHAN
- PERINGATAN
- INFO
- 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(accountResult: 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.