Menjelajahi Microsoft Authentication Library
Microsoft Authentication Library (MSAL) memungkinkan pengembang memperoleh token keamanan dari platform identitas Microsoft untuk mengautentikasi pengguna dan mengakses API web aman. Ini dapat digunakan untuk menyediakan akses aman ke Microsoft Graph, Microsoft API lainnya, API web pihak ketiga, atau API web Anda sendiri. MSAL mendukung berbagai arsitektur dan platform aplikasi termasuk .NET, JavaScript, Java, Python, Android, dan iOS.
MSAL memberi Anda banyak cara untuk mendapatkan token, dengan API yang konsisten untuk banyak platform. Menggunakan MSAL memberi manfaat berikut:
- Tidak perlu langsung menggunakan library atau kode OAuth terhadap protokol di aplikasi Anda.
- Memperoleh token atas nama pengguna atau atas nama aplikasi (jika berlaku untuk platform).
- Mempertahankan cache token dan menyegarkan token untuk Anda saat hampir kedaluwarsa. Anda tidak perlu menangani kedaluwarsa token sendiri.
- Membantu menentukan audiens yang ingin dimasukkan ke aplikasi Anda.
- Membantu Anda menyiapkan aplikasi dari file konfigurasi.
- Membantu Anda memecahkan masalah aplikasi dengan mengekspos pengecualian, pembuatan log, dan telemetri yang dapat dilakukan.
Jenis dan skenario aplikasi
Dalam MSAL, token dapat diperoleh dari banyak jenis aplikasi: aplikasi web, API web, aplikasi satu halaman (JavaScript), aplikasi seluler dan asli, serta daemon dan aplikasi sisi server. MSAL saat ini mendukung platform dan kerangka kerja yang tercantum dalam tabel berikut.
| Pustaka | Platform dan kerangka kerja yang didukung |
|---|---|
| MSAL untuk Android | Android |
| MSAL Angular | Aplikasi halaman tunggal dengan kerangka kerja Angular dan Angular.js |
| MSAL untuk iOS dan macOS | iOS dan macOS |
| MSAL Go (Pratinjau) | Windows, macOS, Linux |
| MSAL Java | Windows, macOS, Linux |
| MSAL.js | Kerangka kerja JavaScript/TypeScript seperti Vue.js, Ember.js, atau Durandal.js |
| MSAL.NET | .NET Framework, .NET, .NET MAUI, WINUI, Xamarin Android, Xamarin iOS, Platform Windows Universal |
| MSAL Node | Aplikasi web dengan Express, aplikasi desktop dengan Electron, aplikasi konsol lintas platform |
| MSAL Python | Windows, macOS, Linux |
| MSAL React | Aplikasi halaman tunggal dengan React dan pustaka berbasis React (Next.js, Gatsby.js) |
Alur autentikasi
Tabel berikut ini memperlihatkan beberapa alur autentikasi berbeda yang disediakan oleh Microsoft Authentication Library (MSAL). Alur ini dapat digunakan dalam berbagai skenario aplikasi.
| Alur autentikasi | Aktifkan | Jenis aplikasi yang didukung |
|---|---|---|
| Kode otorisasi | Proses masuk pengguna dan akses ke API web atas nama pengguna. | Desktop, Seluler, Aplikasi halaman tunggal (SPA) (memerlukan PKCE), Web |
| Informasi masuk klien | Akses ke API web menggunakan identitas aplikasi itu sendiri. Biasanya digunakan untuk komunikasi server-ke-server dan skrip otomatis yang tidak memerlukan interaksi pengguna. | Daemon |
| Kode perangkat | Proses masuk pengguna dan akses ke API web atas nama pengguna pada perangkat yang dibatasi input seperti smart TV dan perangkat IoT. Juga digunakan oleh aplikasi antarmuka tingkat panggilan (CLI). | Desktop, Seluler |
| Pemberian implisit | Proses masuk pengguna dan akses ke API web atas nama pengguna. Alur pemberian implisit tidak lagi direkomendasikan - gunakan kode otorisasi dengan PKCE sebagai gantinya. | Aplikasi satu halaman (SPA), Web |
| Atas Nama (OBO) | Akses dari API web "upstream" ke API web "downstream" atas nama pengguna. Identitas pengguna dan izin yang didelegasikan diteruskan ke API downstream dari API upstream. | API Web |
| Nama pengguna/kata sandi (ROPC) | Memungkinkan aplikasi untuk masuk ke pengguna dengan langsung menangani kata sandinya. Alur ROPC TIDAK disarankan. | Desktop, Seluler |
| Autentikasi Windows terintegrasi (IWA) | Memungkinkan aplikasi pada domain atau komputer yang bergabung dengan Microsoft Entra untuk memperoleh token secara diam-diam (tanpa interaksi UI dari pengguna). | Desktop, Seluler |
Klien publik dan aplikasi klien rahasia
Microsoft Authentication Library (MSAL) mendefinisikan dua jenis klien; klien publik dan klien rahasia. Klien adalah entitas perangkat lunak yang memiliki pengidentifikasi unik yang ditetapkan oleh Penyedia Identitas. Jenis klien berbeda berdasarkan kemampuan mereka untuk mengautentikasi dengan aman dengan server otorisasi dan untuk menyimpan informasi pembuktian identitas yang sensitif sehingga tidak dapat diakses atau diketahui oleh pengguna dalam cakupan aksesnya.
Saat memeriksa sifat publik atau rahasia klien tertentu, kami mengevaluasi kemampuan klien tersebut untuk membuktikan identitasnya ke server otorisasi. Ini penting karena server otorisasi harus dapat mempercayai identitas klien untuk mengeluarkan token akses.
Aplikasi klien publik berjalan di perangkat, seperti desktop, API tanpa browser, aplikasi browser seluler atau sisi klien. Mereka tidak dapat dipercaya untuk menyimpan rahasia aplikasi dengan aman, sehingga mereka hanya dapat mengakses API web atas nama pengguna. Kapan saja sumber, atau bytecode yang dikompilasi dari aplikasi tertentu, ditransmisikan di mana saja dapat dibaca, dibongkar, atau diperiksa oleh pihak yang tidak tepercaya. Karena mereka juga hanya mendukung alur klien publik dan tidak dapat menyimpan rahasia waktu konfigurasi, mereka tidak dapat memiliki rahasia klien.
Aplikasi klien rahasia berjalan di server, seperti aplikasi web, aplikasi API web, atau aplikasi layanan/daemon. Mereka dianggap sulit diakses oleh pengguna atau penyerang, dan oleh karena itu dapat secara memadai menyimpan rahasia waktu konfigurasi untuk menegaskan bukti identitasnya. ID klien diekspos melalui browser web, tetapi rahasia hanya dilewatkan di saluran belakang dan tidak pernah langsung terekspos.