Meningkatkan ketahanan autentikasi dan otorisasi dalam aplikasi klien yang Anda kembangkan
Pelajari cara membangun ketahanan ke dalam aplikasi klien yang menggunakan platform identitas Microsoft dan ID Microsoft Entra untuk memasukkan pengguna, dan melakukan tindakan atas nama pengguna tersebut.
Menggunakan Microsoft Authentication Library (MSAL)
Microsoft Authentication Library (MSAL) adalah bagian dari platform identitas Microsoft. MSAL memperoleh, mengelola, menyimpan cache, dan menyegarkan token; ini menggunakan praktik terbaik untuk ketahanan. MSAL membantu pengembang menciptakan solusi yang aman.
Selengkapnya:
- Gambaran umum Pustaka Autentikasi Microsoft
- Apa itu platform identitas Microsoft?
- dokumentasi platform identitas Microsoft
MSAL menyimpan token dan menggunakan pola akuisisi token senyap. MSAL menserialisasikan cache token pada sistem operasi yang secara asli menyediakan penyimpanan aman seperti Platform Windows Universal (UWP), iOS, dan Android. Sesuaikan perilaku serialisasi saat Anda menggunakan:
- Microsoft.Identity.Web
- MSAL.NET
- MSAL untuk Java
- MSAL untuk Python
Selengkapnya:
Saat Anda menggunakan MSAL, penembolokan token, refresh, dan akuisisi senyap didukung. Gunakan pola sederhana untuk memperoleh token untuk autentikasi. Ada dukungan untuk banyak bahasa. Temukan sampel kode aktif, platform identitas Microsoft sampel kode.
try
{
result = await app.AcquireTokenSilent(scopes, account).ExecuteAsync();
}
catch(MsalUiRequiredException ex)
{
result = await app.AcquireToken(scopes).WithClaims(ex.Claims).ExecuteAsync()
}
MSAL dapat menyegarkan token. Ketika platform identitas Microsoft mengeluarkan token berumur panjang, token tersebut dapat mengirim informasi ke klien untuk me-refresh token (refresh_in). Aplikasi berjalan saat token lama valid, tetapi membutuhkan waktu lebih lama untuk akuisisi token lain.
Rilis MSAL
Sebaiknya pengembang membangun proses untuk menggunakan rilis MSAL terbaru karena autentikasi adalah bagian dari keamanan aplikasi. Gunakan praktik ini untuk pustaka yang sedang dikembangkan dan tingkatkan ketahanan aplikasi.
Temukan versi terbaru dan catatan rilis:
microsoft-authentication-library-for-js
microsoft-authentication-library-for-dotnet
microsoft-authentication-library-for-python
microsoft-authentication-library-for-java
microsoft-authentication-library-for-objc
microsoft-authentication-library-for-android
microsoft-identity-web
Pola tangguh untuk penanganan token
Jika Anda tidak menggunakan MSAL, gunakan pola tangguh untuk penanganan token. Pustaka MSAL menerapkan praktik terbaik.
Umumnya, aplikasi yang menggunakan autentikasi modern memanggil titik akhir untuk mengambil token yang mengautentikasi pengguna, atau mengotorisasi aplikasi untuk memanggil API yang dilindungi. MSAL menangani autentikasi dan menerapkan pola untuk meningkatkan ketahanan. Jika Anda tidak menggunakan MSAL, gunakan panduan di bagian ini untuk praktik terbaik. Jika tidak, MSAL menerapkan praktik terbaik secara otomatis.
Token cache
Pastikan token cache aplikasi secara akurat dari platform identitas Microsoft. Setelah aplikasi Anda menerima token, respons HTTP dengan token memiliki expires_in
properti yang menunjukkan durasi untuk cache, dan kapan harus menggunakannya kembali. Konfirmasikan aplikasi tidak mencoba mendekode token akses API.
Token yang di-cache mencegah lalu lintas yang tidak perlu antara aplikasi dan platform identitas Microsoft. Skenario ini membuat aplikasi kurang rentan terhadap kegagalan akuisisi token dengan mengurangi panggilan akuisisi token. Token yang di-cache meningkatkan performa aplikasi, karena aplikasi memblokir memperoleh token lebih jarang. Pengguna tetap masuk ke aplikasi Anda untuk masa pakai token.
Menserialisasikan dan mempertahankan token
Pastikan aplikasi membuat serialisasi cache token mereka dengan aman untuk mempertahankan token antar instans aplikasi. Gunakan kembali token selama masa pakainya. Token refresh dan token akses dikeluarkan selama berjam-jam. Selama waktu ini, pengguna mungkin memulai aplikasi Anda beberapa kali. Saat aplikasi dimulai, konfirmasikan bahwa aplikasi mencari akses yang valid, atau token refresh. Ini meningkatkan ketahanan dan performa aplikasi.
Selengkapnya:
Pastikan penyimpanan token persisten memiliki kontrol akses dan enkripsi, sehubungan dengan pemilik pengguna, atau identitas proses. Pada berbagai sistem operasi, ada fitur penyimpanan kredensial.
Memperoleh token secara diam-diam
Mengautentikasi pengguna atau mengambil otorisasi untuk memanggil API memerlukan beberapa langkah dalam platform identitas Microsoft. Misalnya, pengguna yang masuk untuk pertama kalinya memasukkan kredensial dan melakukan autentikasi multifaktor. Setiap langkah memengaruhi sumber daya yang menyediakan layanan. Pengalaman pengguna terbaik dengan dependensi paling sedikit adalah akuisisi token senyap.
Akuisisi token senyap dimulai dengan token yang valid dari cache token aplikasi. Jika tidak ada token yang valid, aplikasi mencoba memperoleh token menggunakan token refresh yang tersedia, dan titik akhir token. Jika tidak ada opsi yang tersedia, aplikasi memperoleh token menggunakan prompt=none
parameter . Tindakan ini menggunakan titik akhir otorisasi, tetapi tidak ada UI yang muncul untuk pengguna. Jika memungkinkan, platform identitas Microsoft menyediakan token ke aplikasi tanpa interaksi pengguna. Jika tidak ada metode yang menghasilkan token, maka pengguna secara manual mengautentikasi ulang.
Catatan
Secara umum, pastikan aplikasi tidak menggunakan perintah seperti 'login' dan 'persetujuan'. Perintah ini memaksa interaksi pengguna, ketika tidak ada interaksi yang diperlukan.
Penanganan kode respons
Gunakan bagian berikut untuk mempelajari tentang kode respons.
Kode respons HTTP 429
Ada respons kesalahan yang memengaruhi ketahanan. Jika aplikasi Anda menerima kode respons HTTP 429, Terlalu Banyak Permintaan, platform identitas Microsoft membatasi permintaan Anda. Jika aplikasi membuat terlalu banyak permintaan, aplikasi akan dibatasi untuk mencegah aplikasi menerima token. Jangan izinkan aplikasi untuk mencoba akuisisi token, sebelum waktu bidang respons Coba Lagi-Setelah selesai. Seringkali, respons 429 menunjukkan aplikasi tidak menyimpan cache dan menggunakan kembali token dengan benar. Konfirmasikan bagaimana token di-cache dan digunakan kembali dalam aplikasi.
Kode respons HTTP 5x
Jika aplikasi menerima kode respons HTTP 5x, aplikasi tidak boleh memasukkan perulangan coba lagi yang cepat. Gunakan penanganan yang sama untuk respons 429. Jika tidak ada header Coba Lagi-Setelah muncul, terapkan coba lagi back-off eksponensial dengan coba lagi pertama, setidaknya 5 detik setelah respons.
Ketika waktu permintaan habis, percobaan ulang segera tidak disarankan. Terapkan coba lagi back-off eksponensial, dengan coba lagi pertama, setidaknya 5 detik setelah respons.
Mengambil informasi terkait otorisasi
Banyak aplikasi dan API memerlukan informasi pengguna untuk diotorisasi. Metode yang tersedia memiliki kelebihan dan kekurangan.
Token
Token identitas (ID) dan token akses memiliki klaim standar yang memberikan informasi. Jika informasi yang diperlukan ada dalam token, teknik yang paling efisien adalah klaim token, karena itu mencegah panggilan jaringan lain. Lebih sedikit panggilan jaringan yang sama dengan ketahanan yang lebih baik.
Selengkapnya:
Catatan
Beberapa aplikasi memanggil titik akhir UserInfo untuk mengambil klaim tentang pengguna yang diautentikasi. Informasi dalam token ID adalah superset informasi dari titik akhir UserInfo. Aktifkan aplikasi untuk menggunakan token ID alih-alih memanggil titik akhir UserInfo.
Menambah klaim token standar dengan klaim opsional, seperti grup. Opsi Grup Aplikasi menyertakan grup yang ditetapkan ke aplikasi. Opsi Semua atau Grup keamanan menyertakan grup dari aplikasi di penyewa yang sama, yang dapat menambahkan grup ke token. Evaluasi efeknya, karena dapat meniadakan efisiensi permintaan grup dalam token dengan menyebabkan kembung token, dan membutuhkan lebih banyak panggilan untuk mendapatkan grup.
Selengkapnya:
Sebaiknya Gunakan dan sertakan peran aplikasi, yang dikelola pelanggan dengan menggunakan portal atau API. Tetapkan peran kepada pengguna dan grup untuk mengontrol akses. Ketika token dikeluarkan, peran yang ditetapkan berada dalam klaim peran token. Informasi yang berasal dari token mencegah lebih banyak panggilan API.
Lihat, Menambahkan peran aplikasi ke aplikasi Anda dan menerimanya di token
Tambahkan klaim berdasarkan informasi penyewa. Misalnya, ekstensi memiliki ID Pengguna khusus perusahaan.
Menambahkan informasi dari direktori ke token efisien dan meningkatkan ketahanan dengan mengurangi dependensi. Ini tidak mengatasi masalah ketahanan karena ketidakmampuan untuk memperoleh token. Tambahkan klaim opsional untuk skenario utama aplikasi. Jika aplikasi memerlukan informasi untuk fungsionalitas administratif, aplikasi dapat memperoleh informasi tersebut, sesuai kebutuhan.
Microsoft Graph
Microsoft Graph memiliki titik akhir API terpadu untuk mengakses data Microsoft 365 tentang pola produktivitas, identitas, dan keamanan. Aplikasi yang menggunakan Microsoft Graph dapat menggunakan informasi Microsoft 365 untuk otorisasi.
Aplikasi memerlukan satu token untuk mengakses Microsoft 365, yang lebih tangguh daripada API sebelumnya untuk komponen Microsoft 365 seperti Microsoft Exchange atau Microsoft SharePoint yang memerlukan beberapa token.
Saat menggunakan Microsoft Graph API, gunakan Microsoft Graph SDK yang menyederhanakan pembuatan aplikasi tangguh yang mengakses Microsoft Graph.
Lihat, gambaran umum Microsoft Graph SDK
Untuk otorisasi, pertimbangkan untuk menggunakan klaim token alih-alih beberapa panggilan Microsoft Graph. Meminta grup, peran aplikasi, dan klaim opsional dalam token. Microsoft Graph untuk otorisasi memerlukan lebih banyak panggilan jaringan yang bergantung pada platform identitas Microsoft dan Microsoft Graph. Namun, jika aplikasi Anda mengandalkan Microsoft Graph sebagai lapisan datanya, maka Microsoft Graph untuk otorisasi tidak lebih berisiko.
Menggunakan autentikasi broker di perangkat seluler
Di perangkat seluler, broker autentikasi seperti Microsoft Authenticator meningkatkan ketahanan. Broker autentikasi menggunakan token refresh utama (PRT) dengan klaim tentang pengguna dan perangkat. Gunakan PRT untuk token autentikasi untuk mengakses aplikasi lain dari perangkat. Saat PRT meminta akses aplikasi, MICROSOFT Entra ID mempercayai perangkat dan klaim MFA-nya. Ini meningkatkan ketahanan dengan mengurangi langkah-langkah untuk mengautentikasi perangkat. Pengguna tidak ditantang dengan beberapa perintah MFA pada perangkat yang sama.
Lihat, Apa itu Token Refresh Utama?
MSAL mendukung autentikasi broker. Selengkapnya:
Evaluasi Akses Berkelanjutan
Evaluasi Akses Berkelanjutan (CAE) meningkatkan keamanan dan ketahanan aplikasi dengan token berumur panjang. Dengan CAE, token akses dicabut berdasarkan peristiwa penting dan evaluasi kebijakan, bukan masa pakai token pendek. Untuk beberapa API sumber daya, karena risiko dan kebijakan dievaluasi secara real time, CAE meningkatkan masa pakai token hingga 28 jam. MSAL menyegarkan token berumur panjang.
Selengkapnya:
- Evaluasi Akses Berkelanjutan
- Mengamankan aplikasi dengan Evaluasi Akses Berkelanjutan
- Evaluasi peristiwa penting
- Evaluasi kebijakan Akses Bersyar
- Cara menggunakan API yang diaktifkan CAE di aplikasi Anda
Jika Anda mengembangkan API sumber daya, buka openid.net
Untuk Sinyal Bersama – Kerangka Kerja Webhook Aman.
Langkah berikutnya
- Cara menggunakan API yang diaktifkan CAE di aplikasi Anda
- Meningkatkan ketahanan autentikasi dan otorisasi dalam aplikasi daemon yang Anda kembangkan
- Membangun ketahanan dalam infrastruktur manajemen identitas dan akses Anda
- Membangun ketahanan dalam identitas pelanggan dan manajemen akses Anda dengan Azure AD B2C