Mengotorisasi akses ke API dengan Microsoft Authentication Library
Anda sekarang dapat memasukkan pengguna perusahaan Anda ke aplikasi web. Selanjutnya, Anda ingin menampilkan informasi seperti jabatan, email kerja, dan sebagainya dari profil karyawan mereka di halaman. Anda menemukan bahwa Microsoft Graph API menyediakan akses ke data terkait pengguna.
Di unit ini, Anda mempelajari bagaimana MSAL dapat membantu Anda mendapatkan akses resmi ke layanan Microsoft seperti Microsoft Graph API.
Izin dan cakupan API
Layanan web yang diamankan oleh MICROSOFT Entra ID menentukan sekumpulan izin yang menyediakan akses ke fungsionalitas API dan data yang diekspos layanan. Aplikasi pihak ketiga dapat meminta izin ini dari pengguna dan administrator, yang harus menyetujui permintaan sebelum aplikasi dapat mengakses data atau bertindak atas nama pengguna. Sebagai contoh, Microsoft Graph memiliki izin yang ditentukan untuk melakukan tugas berikut, antara lain:
- Membaca kalender pengguna
- Menulis ke kalender pengguna
- Kirim email sebagai pengguna
Pengguna dan administrator dapat melatih kontrol dan mengetahui data apa yang dapat diakses aplikasi. Sebelum aplikasi Anda dapat mengakses API yang diamankan oleh Microsoft, Anda perlu memberikan izin aplikasi untuk melakukan tindakan.
ID Microsoft Entra mendukung dua jenis izin: izin yang didelegasikan dan izin aplikasi.
Izin yang didelegasikan digunakan oleh aplikasi yang memiliki pengguna yang masuk. Untuk aplikasi ini, pengguna atau administrator menyetujui izin yang diminta aplikasi. Aplikasi diberi izin untuk bertindak sebagai pengguna yang masuk saat melakukan panggilan ke API target. Beberapa izin istimewa tinggi memerlukan persetujuan administrator.
Izin aplikasi digunakan oleh aplikasi yang berjalan tanpa kehadiran pengguna yang masuk; misalnya, aplikasi yang berjalan sebagai layanan latar belakang atau daemon. Hanya administrator yang bisa menyetujui izin aplikasi.
Anda dapat menetapkan izin API ini ke pendaftaran aplikasi Anda dari portal Azure.
Cakupan
MICROSOFT Entra ID menerapkan protokol otorisasi OAuth 2.0 di mana aplikasi dapat mengakses sumber daya yang dihosting web atas nama pengguna.
Di OAuth 2.0, jenis set izin ini disebut cakupan. Saat membuat permintaan otorisasi ke ID Microsoft Entra, aplikasi meminta izin yang dibutuhkan dengan menentukan izin dalam parameter kueri permintaan scope . Misalnya, nilai cakupan https://graph.microsoft.com/Calendars.Read digunakan untuk meminta izin untuk membaca kalender pengguna di Microsoft Graph.
Mendapatkan token akses dengan MSAL
Token akses memungkinkan aplikasi klien untuk memanggil API web dengan aman yang dilindungi oleh ID Microsoft Entra. Ada beberapa cara untuk memperoleh token akses dengan menggunakan Microsoft Authentication Library (MSAL). Secara umum, metode yang digunakan untuk memperoleh token tergantung pada apakah aplikasi tersebut adalah aplikasi klien publik seperti aplikasi desktop atau seluler, atau aplikasi klien rahasia seperti aplikasi web, web API, atau aplikasi daemon.
Beberapa metode akuisisi token MSAL memerlukan parameter scopes, yaitu daftar string yang menyatakan izin yang diinginkan dan sumber daya yang diminta.
Pola panggilan yang direkomendasikan untuk aplikasi web
MSAL membuat cache token setelah diperoleh. Untuk aplikasi Web yang menggunakan alur kode otorisasi OpenID Connect, pola yang disarankan dalam pengontrol adalah:
Pertama mencoba untuk mendapatkan token secara diam-diam dari cache sebelum mencoba memperoleh token dengan cara lain. Kode berikut adalah kutipan
acquireTokenSilentlydari implementasi metode diAuthHelperkelas .final SilentParameters parameters = SilentParameters .builder(Collections.singleton(Config.SCOPES), context.getAccount()) .build(); final ConfidentialClientApplication client = getConfidentialClientInstance(); client.tokenCache().deserialize(context.getTokenCache()); final IAuthenticationResult result = client.acquireTokenSilently(parameters).get();Jika tidak ada token dalam cache dan permintaan token senyap gagal mendapatkan token, Anda dapat memperoleh token menggunakan alur kode otorisasi:
final AuthorizationCodeParameters authParams = AuthorizationCodeParameters .builder(authCode, new URI(Config.REDIRECT_URI)).scopes(Collections.singleton(Config.SCOPES)) .build(); final IAuthenticationResult result = app.acquireToken(authParams).get();
MSAL juga mampu merefresh token saat mendekati waktu kedaluwarsa (karena cache token juga berisi token refresh).
Hasil autentikasi
Saat klien Anda meminta token akses, MICROSOFT Entra ID juga mengembalikan hasil autentikasi yang menyertakan metadata tentang token akses. Data ini memungkinkan aplikasi Anda untuk melakukan penembolokan cerdas terhadap token akses tanpa harus memilah token akses itu sendiri.
AuthenticationResult MSAL menampilkan ekspos:
- Token akses untuk API web.
- Token ID untuk pengguna (JWT).
- Kedaluwarsa token, yang memberi tahu tanggal/waktu saat token kedaluwarsa.
- ID penyewa berisi penyewa tempat pengguna ditemukan.
- Cakupan yang diminta token.
- ID unik untuk pengguna.
Pengantar Microsoft Graph
Microsoft Graph API menawarkan satu titik akhir, https://graph.microsoft.com, untuk menyediakan akses ke data dan wawasan kaya yang berpusat pada orang-orang di cloud Microsoft. Anda dapat menggunakan API REST atau SDK untuk mengakses titik akhir dan membuat aplikasi yang mendukung skenario Microsoft 365, yang mencakup produktivitas, kolaborasi, pendidikan, kecerdasan orang dan tempat kerja, dan banyak lagi. Microsoft Graph juga menyertakan serangkaian layanan canggih yang mengelola identitas pengguna dan perangkat.
Misalnya, Anda dapat membaca properti pengguna yang masuk dengan mengakses titik akhir https://graph.microsoft.com/v1.0/me.