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.
Artikel ini mendemonstrasikan aplikasi Java JBoss EAP yang mengautentikasi pengguna untuk masuk ke penyewa Microsoft Entra ID Anda menggunakan Pustaka Autentikasi Microsoft (MSAL) untuk Java.
Diagram berikut menunjukkan topologi aplikasi:
Diagram yang menunjukkan topologi aplikasi.
Aplikasi klien menggunakan MSAL untuk Java (MSAL4J) untuk mengautentikasi pengguna ke tenant Microsoft Entra ID mereka sendiri dan memperoleh token ID dari Microsoft Entra ID. Token ID membuktikan bahwa pengguna diautentikasi dengan penyewa ini. Aplikasi ini melindungi rutenya sesuai dengan status autentikasi pengguna.
Prasyarat
- JDK versi 8 atau lebih tinggi
- Maven 3
- Tenant Microsoft Entra ID. Untuk informasi selengkapnya, lihat Cara mendapatkan penyewa Microsoft Entra ID.
- Akun pengguna di tenant Microsoft Entra ID milik Anda sendiri jika Anda ingin bekerja dengan akun hanya di direktori organisasi Anda—yaitu dalam mode single-tenant. Jika Anda belum membuat akun pengguna di penyewa ID Microsoft Entra, Anda harus melakukannya sebelum melanjutkan. Untuk informasi selengkapnya, lihat Cara membuat, mengundang, dan menghapus pengguna.
- Akun pengguna di tenant Microsoft Entra ID milik organisasi mana pun jika Anda ingin mengelola akun di direktori organisasi mana pun—yaitu, dalam mode multitenant. Anda harus mengubah sampel ini agar berfungsi dengan akun Microsoft pribadi. Jika Anda belum membuat akun pengguna di penyewa ID Microsoft Entra, Anda harus melakukannya sebelum melanjutkan. Untuk informasi selengkapnya, lihat Cara membuat, mengundang, dan menghapus pengguna.
- Akun Microsoft pribadi - misalnya, Xbox, Hotmail, Live, dan sebagainya - jika Anda ingin bekerja dengan akun Microsoft pribadi.
- JBoss EAP
- Visual Studio Code
- Alat Azure untuk Visual Studio Code
Rekomendasi
- Sedikit pemahaman tentang Java / Jakarta Servlets.
- Beberapa keakraban dengan terminal Linux/OSX.
- jwt.ms untuk memeriksa token Anda.
- Fiddler untuk memantau aktivitas jaringan dan memecahkan masalah.
- Ikuti Blog Microsoft Entra untuk tetap up-to-date dengan perkembangan terbaru.
Siapkan sampel
Bagian berikut menunjukkan kepada Anda cara menyiapkan aplikasi sampel.
Mengkloning atau mengunduh repositori sampel
Untuk mengkloning sampel, buka jendela Bash dan gunakan perintah berikut:
git clone https://github.com/Azure-Samples/ms-identity-msal-java-samples.git
cd 3-java-servlet-web-app/1-Authentication/sign-in
Atau, buka repositori ms-identity-msal-java-samples, lalu unduh sebagai file .zip dan ekstrak ke hard drive Anda.
Penting
Untuk menghindari batasan panjang jalur file pada Windows, kloning atau ekstrak repositori ke direktori di dekat akar hard drive Anda.
Daftarkan aplikasi sampel dengan tenant Microsoft Entra ID Anda
Ada satu proyek dalam sampel ini. Bagian ini menunjukkan kepada Anda cara mendaftarkan aplikasi.
Pertama, daftarkan aplikasi di portal Azure dengan mengikuti instruksi di Mulai Cepat: Mendaftarkan aplikasi di platform identitas Microsoft.
Kemudian, gunakan langkah-langkah berikut untuk menyelesaikan pendaftaran:
Buka halaman Pendaftaran aplikasi di platform identitas Microsoft untuk pengembang.
Pilih Pendaftaran baru.
Di halaman Daftarkan aplikasi yang muncul, masukkan informasi pendaftaran aplikasi berikut ini:
Di bagian Nama, masukkan nama aplikasi yang deskriptif untuk ditampilkan kepada pengguna aplikasi tersebut - misalnya, .
Di bawah Jenis akun yang didukung, pilih salah satu opsi berikut:
- Pilih Akun hanya di direktori organisasi ini jika Anda membuat aplikasi yang hanya digunakan oleh pengguna di tenant Anda—yaitu, aplikasi single-tenant.
- Pilih Akun di direktori organisasi mana pun jika Anda ingin pengguna di tenant Microsoft Entra ID mana pun dapat menggunakan aplikasi Anda—yaitu aplikasi multitenant.
- Pilih Akun di direktori organisasi mana pun dan akun Microsoft pribadi untuk cakupan pelanggan terluas - yaitu, aplikasi multipenyewa yang juga mendukung akun Microsoft pribadi.
- Pilih akun Microsoft pribadi untuk digunakan hanya oleh pengguna akun Microsoft pribadi - misalnya, akun Hotmail, Live, Skype, dan Xbox.
Di bagian URI pengalihan, pilih Web pada kotak kombo dan masukkan URI pengalihan berikut: .
Pilih Daftar untuk membuat aplikasi.
Pada halaman registrasi aplikasi, temukan dan salin nilai ID Aplikasi (klien) untuk digunakan nanti. Anda menggunakan nilai ini dalam file atau file konfigurasi aplikasi Anda.
Pada halaman pendaftaran aplikasi, pilih Sertifikat & rahasia di panel navigasi untuk membuka halaman untuk menghasilkan rahasia dan mengunggah sertifikat.
Di bagian Rahasia klien, pilih Rahasia klien baru.
Ketik deskripsi - misalnya, rahasia aplikasi.
Pilih kedaluwarsa untuk rahasia atau tentukan masa pakai kustom. Rahasia klien dibatasi hingga masa pakai maksimum 24 bulan, dan Microsoft merekomendasikan kedaluwarsa kurang dari 12 bulan. Untuk aplikasi produksi, pilih sertifikat atau kredensial identitas federasi daripada rahasia klien.
Pilih Tambahkan. Nilai yang dihasilkan ditampilkan.
Salin dan simpan nilai yang dihasilkan untuk digunakan di langkah selanjutnya. Anda memerlukan nilai ini untuk file konfigurasi kode Anda. Nilai ini tidak ditampilkan lagi, dan Anda tidak dapat mengambilnya dengan cara lain. Jadi, pastikan untuk menyimpannya dari portal Azure sebelum Anda menavigasi ke layar atau panel lain.
Konfigurasikan aplikasi agar menggunakan pendaftaran app Anda
Gunakan langkah-langkah berikut untuk mengonfigurasi aplikasi:
Catatan
Pada langkah-langkah berikut, sama dengan atau .
Buka proyek di IDE Anda.
Buka file ./src/main/resources/authentication.properties.
Temukan string . Ganti nilai yang sudah ada dengan salah satu nilai berikut:
- ID tenant Microsoft Entra ID Anda jika Anda mendaftarkan aplikasi Anda dengan opsi Akun hanya di direktori organisasi ini.
- Kata jika Anda mendaftarkan aplikasi Anda dengan opsi Akun di direktori organisasi mana pun.
- Kata jika Anda mendaftarkan aplikasi Anda dengan opsi Akun di direktori organisasi mana pun dan akun Microsoft pribadi.
- Gunakan kata jika Anda mendaftarkan aplikasi Anda dengan opsi Akun Microsoft Pribadi.
Temukan string dan ganti nilai yang ada dengan ID aplikasi atau dari aplikasi yang disalin dari portal Azure.
Temukan string dan ganti nilai yang ada dengan nilai yang Anda simpan saat membuat aplikasi , di portal Azure.
Susun sampel
Untuk membuat sampel menggunakan Maven, navigasikan ke direktori yang berisi file pom.xml untuk sampel, lalu jalankan perintah berikut:
mvn clean package
Perintah ini menghasilkan file .war yang dapat Anda jalankan di berbagai server aplikasi.
Jalankan sampel
- Sebarkan ke Azure App Service
- Jalankan secara lokal
Bagian berikut menunjukkan kepada Anda cara menyebarkan sampel ke Azure App Service.
Prasyarat
Plugin Maven untuk aplikasi Azure App Service
Jika Maven bukan alat pengembangan pilihan Anda, lihat tutorial serupa berikut yang menggunakan alat lain:
- IntelliJ IDEA
- Eclipse
- Visual Studio Code
Mengonfigurasikan plugin Maven
Proses penyebaran ke Azure App Service menggunakan kredensial Azure Anda dari Azure CLI secara otomatis. Jika Azure CLI tidak diinstal secara lokal, maka plugin Maven mengautentikasi dengan OAuth atau masuk perangkat. Untuk informasi selengkapnya, lihat autentikasi dengan plugin Maven.
Gunakan langkah-langkah berikut untuk mengonfigurasi plugin:
Jalankan perintah Maven yang ditampilkan di samping untuk mengonfigurasi penyebaran. Perintah ini membantu Anda menyiapkan sistem operasi App Service, versi Java, dan versi Tomcat.
mvn com.microsoft.azure:azure-webapp-maven-plugin:2.12.0:configUntuk Buat konfigurasi eksekusi baru, tekan Y, lalu tekan Enter.
Untuk menentukan nilai untuk OS, tekan 2 untuk Linux, lalu tekan Enter.
Untuk menentukan nilai untuk javaVersion, tekan 2 untuk Java 11, lalu tekan Enter.
Untuk Tetapkan nilai untuk webContainer, tekan 1 untuk JBosseap7, lalu tekan Enter.
Untuk menentukan nilai untuk pricingTier, tekan Enter untuk memilih tingkat P1v3 default.
Untuk Konfirmasi, tekan Y, lalu tekan Enter.
Contoh berikut menunjukkan output proses penyebaran:
Please confirm webapp properties
AppName : msal4j-servlet-auth-1707220080695
ResourceGroup : msal4j-servlet-auth-1707220080695-rg
Region : centralus
PricingTier : P1v3
OS : Linux
Java Version: Java 11
Web server stack: JBosseap 7
Deploy to slot : false
Confirm (Y/N) [Y]:
[INFO] Saving configuration to pom.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26.196 s
[INFO] Finished at: 2024-02-06T11:48:16Z
[INFO] ------------------------------------------------------------------------
Setelah Anda mengonfirmasi pilihan, plugin menambahkan konfigurasi plugin dan pengaturan yang diperlukan ke file pom.xml proyek Anda untuk mengonfigurasi aplikasi Anda agar dapat berjalan di Azure App Service.
Bagian yang relevan dari file pom.xml akan terlihat mirip dengan contoh berikut:
<build>
<plugins>
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>>azure-webapp-maven-plugin</artifactId>
<version>x.xx.x</version>
<configuration>
<schemaVersion>v2</schemaVersion>
<resourceGroup>your-resourcegroup-name</resourceGroup>
<appName>your-app-name</appName>
...
</configuration>
</plugin>
</plugins>
</build>
Anda dapat mengubah konfigurasi untuk App Service secara langsung di dalam pom.xml. Beberapa konfigurasi umum tercantum dalam tabel berikut:
| Properti | Wajib | Deskripsi | Versi |
|---|---|---|---|
schemaVersion |
salah | Versi skema konfigurasi. Nilai yang didukung adalah dan . | 1.5.2 |
subscriptionId |
salah | ID langganan. | 0.1.0+ |
resourceGroup |
benar | Grup sumber daya Azure untuk aplikasi Anda. | 0.1.0+ |
appName |
benar | Nama aplikasi Anda. | 0.1.0+ |
region |
salah | Wilayah tempat menghosting aplikasi Anda. Nilai bawaannya adalah . Untuk wilayah yang valid, lihat Wilayah yang Didukung. | 0.1.0+ |
pricingTier |
salah | Tingkat harga untuk aplikasi Anda. Nilai defaultnya adalah P1v2 untuk beban kerja produksi. Nilai minimum yang direkomendasikan untuk pengembangan dan pengujian Java adalah . Untuk informasi selengkapnya, lihat Harga App Service | 0.1.0+ |
runtime |
salah | Konfigurasi lingkungan runtime. Untuk informasi lebih lanjut, lihat Detail Konfigurasi. | 0.1.0+ |
deployment |
salah | Konfigurasi penyebaran. Untuk informasi lebih lanjut, lihat Detail Konfigurasi. | 0.1.0+ |
Untuk daftar lengkap konfigurasi, lihat dokumentasi referensi plugin. Semua plugin Azure Maven berbagi serangkaian konfigurasi umum. Untuk konfigurasi ini, lihat Konfigurasi Umum. Untuk konfigurasi yang khusus untuk Azure App Service, lihat Aplikasi Azure: Detail Konfigurasi.
Pastikan untuk menyimpan nilai dan untuk digunakan nanti.
Menyiapkan aplikasi untuk penyebaran
Saat Anda menyebarkan aplikasi ke App Service, URL pengalihan Anda berubah ke URL pengalihan instans aplikasi yang Anda sebarkan. Gunakan langkah-langkah berikut untuk mengubah pengaturan ini di file properti Anda:
Buka file authentication.properties aplikasi Anda dan ubah nilai menjadi nama domain aplikasi yang telah di-deploy, seperti yang ditunjukkan pada contoh berikut. Misalnya, jika Anda memilih sebagai nama aplikasi pada langkah sebelumnya, Anda harus menggunakan untuk nilai . Pastikan bahwa Anda juga telah mengubah protokol dari menjadi .
# app.homePage is by default set to dev server address and app context path on the server # for apps deployed to azure, use https://your-sub-domain.azurewebsites.net app.homePage=https://<your-app-name>.azurewebsites.netSetelah menyimpan file ini, gunakan perintah berikut untuk membangun kembali aplikasi Anda:
mvn clean package
Penting
Dalam file authentication.properties yang sama ini, terdapat setelan untuk . Ini bukan praktik yang baik untuk menyebarkan nilai ini ke App Service. Ini juga bukan praktik yang baik untuk membiarkan nilai ini tetap ada dalam kode Anda dan berpotensi melakukan push ke repositori Git Anda. Untuk menghapus nilai rahasia ini dari kode Anda, Anda dapat menemukan panduan yang lebih terperinci di bagian Deploy ke App Service - Hapus rahasia. Panduan ini menambahkan langkah-langkah tambahan untuk mengirim nilai rahasia ke Key Vault dan menggunakan Key Vault References.
Memperbarui pendaftaran aplikasi ID Microsoft Entra Anda
Karena URI pengalihan berubah ke aplikasi yang disebarkan ke Azure App Service, Anda juga perlu mengubah URI pengalihan di pendaftaran aplikasi ID Microsoft Entra Anda. Gunakan langkah-langkah berikut untuk membuat perubahan ini:
Buka halaman platform identitas Microsoft untuk pengembang Pendaftaran aplikasi.
Gunakan kotak pencarian untuk mencari pendaftaran aplikasi Anda - misalnya, .
Buka pendaftaran aplikasi Anda dengan memilih namanya.
Pilih Autentikasi dari menu.
Di bagian WebURI Pengalihan, pilih Tambahkan URI.
Isi URI aplikasi Anda dengan menambahkan - misalnya, .
Pilih Simpan.
Menyebarkan aplikasi
Anda sekarang siap untuk menyebarkan aplikasi Anda ke Azure App Service. Gunakan perintah berikut untuk memastikan Anda masuk ke lingkungan Azure Anda untuk menjalankan penyebaran:
az login
Dengan semua konfigurasi yang siap di file pom.xml , Anda sekarang dapat menggunakan perintah berikut untuk menyebarkan aplikasi Java Anda ke Azure:
mvn package azure-webapp:deploy
Setelah deployment selesai, aplikasi Anda siap diakses di . Buka URL dengan peramban web lokal Anda, di sana Anda akan melihat halaman awal aplikasi .
Jelajahi contoh
Gunakan langkah-langkah berikut untuk menjelajahi sampel:
- Perhatikan status masuk atau keluar yang ditampilkan di tengah layar.
- Pilih tombol peka konteks di sudut. Tombol ini bertuliskan Masuk saat pertama kali Anda menjalankan aplikasi.
- Pada halaman berikutnya, ikuti instruksi dan masuk menggunakan akun dalam tenant Microsoft Entra ID.
- Pada layar persetujuan, perhatikan cakupan yang diminta.
- Perhatikan bahwa tombol peka konteks sekarang mengatakan Keluar dan menampilkan nama pengguna Anda.
- Pilih Detail Token ID untuk melihat beberapa klaim yang telah didekode dari token ID.
- Gunakan tombol di sudut layar untuk keluar dari akun.
- Setelah keluar, pilih Detail Token ID untuk melihat bahwa aplikasi menampilkan kesalahan alih-alih klaim token ID saat pengguna tidak memiliki otorisasi.
Tentang kode
Contoh ini menunjukkan cara menggunakan MSAL for Java (MSAL4J) untuk memungkinkan pengguna masuk ke tenant Microsoft Entra ID Anda. Jika Anda ingin menggunakan MSAL4J di aplikasi Anda sendiri, Anda harus menambahkannya ke proyek Anda menggunakan Maven.
Jika Anda ingin mereplikasi perilaku sampel ini, Anda dapat menyalin file pom.xml dan konten folder pembantu dan authservlets di folder src/main/java/com/microsoft/azuresamples/msal4j. Anda juga memerlukan file authentication.properties. Kelas dan file ini berisi kode generik yang dapat Anda gunakan dalam berbagai aplikasi. Anda juga dapat menyalin bagian lain dari sampel ini, tetapi kelas dan file lainnya dirancang khusus untuk memenuhi tujuan dari sampel ini.
Isi
Tabel berikut ini memperlihatkan konten folder proyek sampel:
| Berkas/folder | Deskripsi |
|---|---|
| src/main/java/com/microsoft/azuresamples/msal4j/authwebapp/ | Direktori ini berisi kelas yang menentukan logika bisnis backend aplikasi. |
| src/main/java/com/microsoft/azuresamples/msal4j/authservlets/ | Direktori ini berisi kelas yang digunakan untuk endpoint login dan logout. |
| *Servlet.java | Semua titik akhir yang tersedia ditentukan dalam kelas Java dengan nama yang berakhiran Servlet. |
| src/main/java/com/microsoft/azuresamples/msal4j/helpers/ | Kelas bantu untuk autentikasi. |
| AuthenticationFilter.java | Mengalihkan permintaan yang tidak terautentikasi ke endpoint yang dilindungi ke halaman 401. |
| src/main/resources/authentication.properties | ID Microsoft Entra dan konfigurasi program. |
| src/main/webapp/ | Direktori ini berisi templat UI - JSP |
| CHANGELOG.md | Daftar perubahan pada sampel. |
| CONTRIBUTING.md | Panduan untuk berkontribusi pada sampel. |
| LISENSI | Lisensi untuk sampel. |
ConfidentialClientApplication
Sebuah instance dibuat di file AuthHelper.java, seperti yang ditunjukkan pada contoh berikut. Objek ini membantu membuat URL otorisasi ID Microsoft Entra dan juga membantu menukar token autentikasi dengan token akses.
// getConfidentialClientInstance method
IClientSecret secret = ClientCredentialFactory.createFromSecret(SECRET);
confClientInstance = ConfidentialClientApplication
.builder(CLIENT_ID, secret)
.authority(AUTHORITY)
.build();
Parameter berikut digunakan untuk instansiasi:
- ID klien aplikasi.
- Rahasia klien, yang merupakan persyaratan untuk Aplikasi Klien Rahasia.
- Otoritas Microsoft Entra ID, yang mencakup ID tenant Microsoft Entra Anda.
Dalam sampel ini, nilai-nilai ini dibaca dari file authentication.properties menggunakan pembaca properti dalam file Config.java .
Panduan langkah demi langkah
Langkah-langkah berikut menyediakan panduan fungsionalitas aplikasi:
Langkah pertama dalam proses masuk adalah mengirim permintaan ke endpoint untuk tenant Microsoft Entra ID Anda. Instans MSAL4J digunakan untuk menyusun URL permintaan otorisasi. Aplikasi mengalihkan browser ke URL ini, yang merupakan tempat pengguna masuk.
final ConfidentialClientApplication client = getConfidentialClientInstance(); AuthorizationRequestUrlParameters parameters = AuthorizationRequestUrlParameters.builder(Config.REDIRECT_URI, Collections.singleton(Config.SCOPES)) .responseMode(ResponseMode.QUERY).prompt(Prompt.SELECT_ACCOUNT).state(state).nonce(nonce).build(); final String authorizeUrl = client.getAuthorizationRequestUrl(parameters).toString(); contextAdapter.redirectUser(authorizeUrl);Daftar berikut menjelaskan fitur kode ini:
: Parameter yang harus ditetapkan untuk membuat AuthorizationRequestUrl.
: Tempat Microsoft Entra ID mengalihkan browser—bersama dengan kode otorisasi—setelah mengumpulkan kredensial pengguna. Harus cocok dengan URI pengalihan dalam pendaftaran aplikasi Microsoft Entra ID di Azure portal.
: Cakupan izin merupakan izin yang diminta oleh aplikasi. Biasanya, ketiga cakupan sudah memadai untuk menerima respons ID token.
Anda dapat menemukan daftar lengkap cakupan yang diminta oleh aplikasi di file authentication.properties. Anda dapat menambahkan lebih banyak cakupan akses, seperti .
Pengguna ditampilkan permintaan untuk masuk oleh Microsoft Entra ID. Jika upaya masuk berhasil, browser pengguna dialihkan ke titik akhir pengalihan aplikasi. Permintaan yang sah ke titik akhir ini berisi kode otorisasi.
Instans kemudian menukarkan kode otorisasi ini untuk mendapatkan token ID dan token akses dari Microsoft Entra ID.
// First, validate the state, then parse any error codes in response, then extract the authCode. Then: // build the auth code params: final AuthorizationCodeParameters authParams = AuthorizationCodeParameters .builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES)).build(); // Get a client instance and leverage it to acquire the token: final ConfidentialClientApplication client = AuthHelper.getConfidentialClientInstance(); final IAuthenticationResult result = client.acquireToken(authParams).get();Daftar berikut menjelaskan fitur kode ini:
- : Parameter yang harus ditetapkan untuk menukar kode otorisasi dengan token ID dan/atau token akses.
- : Kode otorisasi yang diterima di endpoint pengalihan.
- : URI pengalihan yang digunakan pada langkah sebelumnya harus dikirimkan kembali.
- : Cakupan akses yang digunakan pada langkah sebelumnya harus diberikan kembali.
Jika berhasil, klaim token diekstrak. Jika pemeriksaan nonce berhasil, hasilnya ditempatkan dalam - sebuah instans dari - dan disimpan dalam sesi. Aplikasi kemudian dapat membuat instance dari sesi melalui instance setiap kali aplikasi memerlukan akses ke sana, seperti yang ditunjukkan dalam kode berikut:
// parse IdToken claims from the IAuthenticationResult: // (the next step - validateNonce - requires parsed claims) context.setIdTokenClaims(result.idToken()); // if nonce is invalid, stop immediately! this could be a token replay! // if validation fails, throws exception and cancels auth: validateNonce(context); // set user to authenticated: context.setAuthResult(result, client.tokenCache().serialize());
Melindungi rute
Untuk informasi tentang cara aplikasi sampel memfilter akses ke rute, lihat AuthenticationFilter.java. Dalam file authentication.properties, properti app.protect.authenticated berisi rute yang dipisahkan dengan koma dan hanya dapat diakses oleh pengguna yang terautentikasi, seperti yang ditunjukkan pada contoh berikut:
# for example, /token_details requires any user to be signed in and does not require special roles claim(s)
app.protect.authenticated=/token_details
Cakupan
Cakupan izin memberi tahu Microsoft Entra ID tentang tingkat akses yang diminta oleh aplikasi.
Berdasarkan cakupan yang diminta, MICROSOFT Entra ID menyajikan dialog persetujuan kepada pengguna saat masuk. Jika pengguna menyetujui satu atau beberapa scope dan memperoleh token, scope yang telah disetujui dikodekan ke dalam yang dihasilkan.
Untuk cakupan yang diminta oleh aplikasi, lihat authentication.properties. Ketiga cakupan ini diminta oleh MSAL dan diberikan oleh ID Microsoft Entra secara default.
Informasi selengkapnya
- Pustaka Autentikasi Microsoft (MSAL) untuk Java
- Dokumentasi Referensi MSAL Java
- Platform Identitas Microsoft (Microsoft Entra ID untuk pengembang)
- Mulai Cepat: Mendaftarkan aplikasi di platform identitas Microsoft
- Memahami pengalaman persetujuan aplikasi Microsoft Entra ID
- Memahami persetujuan pengguna dan administrator
- Contoh kode MSAL