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 Angkatan Kerja
Penyewa Eksternal (pelajari lebih lanjut)
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.gradle
aplikasi 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
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
.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_Here
dengan ID aplikasi klien dari app yang Anda daftarkan sebelumnya. - Ganti
Enter_the_Tenant_Subdomain_Here
dengan 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.AccountFound
untuk menampilkan status masuk. - Jika tidak, gunakan
GetAccountResult.NoAccountFound
untuk menampilkan status sudah keluar.
Pastikan Anda menyertakan pernyataan impor. Android Studio harus menyertakan perintah impor secara otomatis untuk Anda.