Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Penyewa eksternal (pelajari selengkapnya)
Tutorial ini menunjukkan cara menambahkan SDK autentikasi asli Microsoft Authentication Library (MSAL) ke aplikasi seluler Android.
Di tutorial ini, Anda akan:
- Tambahkan dependensi MSAL.
- Buat file konfigurasi.
- Buat instans MSAL SDK.
Prasyarat
- Jika Anda belum melakukannya, ikuti petunjuk 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
build.gradleaplikasi 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:6.+' //... }Di Android Studio, pilih File>Sinkronkan Proyek 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, navigasikan ke app\src\main\res.
Klik kanan res dan pilih Baru>Direktori. Masukkan
rawsebagai nama direktori baru dan pilih OK.Di app\src\main\res\raw, buat file JSON baru yang disebut
auth_config_native_auth.json.Dalam file
auth_config_native_auth.json, 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 placeholder berikut dengan nilai penyewa yang Anda peroleh dari pusat admin Microsoft Entra.
- Ganti placeholder
Enter_the_Application_Id_Heredengan ID aplikasi klien dari app yang Anda daftarkan sebelumnya. - Ganti
Enter_the_Tenant_Subdomain_Heredengan subdomain direktori (tenant). Misalnya, jika domain utama penyewa Andacontoso.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 menggunakan kode sandi sekali pakai yang dikirim melalui email, gunakan
["oob"]. - Untuk proses pendaftaran dan masuk dengan email dan kata sandi, gunakan
["oob","password"]. - Untuk pengaturan ulang kata sandi mandiri (SSPR), gunakan
["oob"].
Ketahui lebih lanjut jenis tantangan.
- Ganti placeholder
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
- INFORMASI
- PENYEDEHANAAN KATA
Untuk informasi selengkapnya tentang pengelogan MSAL, lihat Pengelogan di MSAL untuk Android.
Membuat instans MSAL SDK autentikasi bawaan
Dalam metode onCreate(), buat instans MSAL sehingga aplikasi dapat melakukan autentikasi dengan penyewa Anda melalui autentikasi asli. Metode createNativeAuthPublicClientApplication() mengembalikan 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.AccountFounduntuk menampilkan status masuk. - Jika tidak, gunakan
GetAccountResult.NoAccountFounduntuk menampilkan status sudah keluar.
Pastikan Anda menyertakan pernyataan impor. Android Studio harus menyertakan perintah impor secara otomatis untuk Anda.