Mengamankan aplikasi dan API dengan memvalidasi klaim
Berinteraksi dengan token adalah bagian inti dari membangun aplikasi untuk mengotorisasi pengguna. Sesuai dengan prinsip Zero Trust untuk akses dengan hak istimewa paling sedikit, penting bagi aplikasi untuk memvalidasi nilai klaim tertentu yang ada dalam token akses saat melakukan otorisasi.
Otorisasi berbasis klaim memungkinkan aplikasi untuk memastikan bahwa token berisi nilai yang benar untuk hal-hal seperti penyewa, subjek, dan aktor yang ada dalam token. Meskipun demikian, otorisasi berbasis klaim dapat tampak kompleks mengingat berbagai metode untuk memanfaatkan dan skenario untuk dilacak. Artikel ini bermasalah untuk menyederhanakan proses otorisasi berbasis klaim sehingga Anda dapat memastikan aplikasi Anda mematuhi praktik yang paling aman.
Untuk memastikan bahwa logika otorisasi Anda aman, Anda harus memvalidasi informasi berikut dalam klaim:
- Audiens yang sesuai ditentukan untuk token.
- ID penyewa token cocok dengan ID penyewa tempat data disimpan.
- Subjek token sesuai.
- Aktor (aplikasi klien) diotorisasi.
Catatan
Token akses hanya divalidasi di API web tempat token tersebut diperoleh oleh klien. Klien tidak boleh memvalidasi token akses.
Untuk informasi selengkapnya tentang klaim yang disebutkan dalam artikel ini, lihat platform identitas Microsoft token akses.
Memvalidasi audiens
Klaim aud
mengidentifikasi audiens token yang dimaksudkan. Sebelum memvalidasi klaim, Anda harus selalu memverifikasi bahwa nilai aud
klaim yang terkandung dalam token akses cocok dengan API Web. Nilai dapat bergantung pada cara klien meminta token. Audiens dalam token akses tergantung pada titik akhir:
- Untuk token v2.0, audiens adalah ID klien api web. Ini guid.
- Untuk token v1.0, audiens adalah salah satu URI appID yang dideklarasikan dalam API web yang memvalidasi token. Misalnya,
api://{ApplicationID}
, atau nama unik yang dimulai dengan nama domain (jika nama domain dikaitkan dengan penyewa).
Untuk informasi selengkapnya tentang URI appID aplikasi, lihat URI ID Aplikasi.
Memvalidasi penyewa
Selalu periksa apakah tid
dalam token cocok dengan ID penyewa yang digunakan untuk menyimpan data dengan aplikasi. Ketika informasi disimpan untuk aplikasi dalam konteks penyewa, informasi hanya boleh diakses lagi nanti di penyewa yang sama. Jangan pernah mengizinkan data dalam satu penyewa diakses dari penyewa lain.
Validasi penyewa hanyalah langkah pertama, dan pemeriksaan subjek dan aktor yang dijelaskan dalam artikel ini masih diperlukan. Jika niat Anda adalah untuk mengotorisasi semua pengguna dalam penyewa, sangat disarankan untuk secara eksplisit menambahkan pengguna ini ke dalam grup dan mengotorisasi berdasarkan grup. Misalnya, dengan hanya memeriksa ID penyewa dan keberadaan oid
klaim, API Anda secara tidak sengaja dapat mengotorisasi semua perwakilan layanan di penyewa tersebut selain pengguna.
Memvalidasi subjek
Tentukan apakah subjek token, seperti pengguna (atau aplikasi itu sendiri untuk token khusus aplikasi), diotorisasi.
Anda dapat memeriksa klaim atau oid
tertentusub
.
Atau,
Anda dapat memeriksa bahwa subjek milik peran atau grup yang sesuai dengan roles
klaim , , scp
groups
, wids
. Misalnya, gunakan nilai tid
klaim yang tidak dapat diubah dan oid
sebagai kunci gabungan untuk data aplikasi dan menentukan apakah pengguna harus diberikan akses.
roles
Klaim , atau wids
groups
juga dapat digunakan untuk menentukan apakah subjek memiliki otorisasi untuk melakukan operasi, meskipun mereka bukan daftar lengkap dari semua cara subjek dapat diberikan izin. Misalnya, administrator mungkin memiliki izin untuk menulis ke API, tetapi bukan pengguna normal, atau pengguna mungkin berada dalam grup yang diizinkan untuk melakukan beberapa tindakan. Klaim mewakili wid
peran seluruh penyewa yang ditetapkan kepada pengguna dari peran yang ada dalam peran bawaan Microsoft Entra. Untuk informasi selengkapnya, lihat Peran bawaan Microsoft Entra.
Peringatan
Jangan pernah menggunakan klaim seperti email
, preferred_username
atau unique_name
untuk menyimpan atau menentukan apakah pengguna dalam token akses harus memiliki akses ke data. Klaim ini tidak unik dan dapat dikontrol oleh administrator penyewa atau terkadang pengguna, yang membuatnya tidak cocok untuk keputusan otorisasi. Mereka hanya dapat digunakan untuk tujuan tampilan. Juga jangan gunakan upn
klaim untuk otorisasi. Meskipun UPN unik, upn sering berubah selama masa pakai prinsipal pengguna, yang membuatnya tidak dapat diandalkan untuk otorisasi.
Memvalidasi aktor
Aplikasi klien yang bertindak atas nama pengguna (disebut sebagai aktor), juga harus diotorisasi. scp
Gunakan klaim (cakupan) untuk memvalidasi bahwa aplikasi memiliki izin untuk melakukan operasi. Izin di harus terbatas pada scp
apa yang sebenarnya dibutuhkan pengguna dan mengikuti prinsip-prinsip hak istimewa paling sedikit.
Namun, ada kemunculan di mana scp
tidak ada dalam token. Anda harus memeriksa tidak adanya scp
klaim untuk skenario berikut:
- Izin hanya aplikasi / aplikasi Daemon
- Token ID
Untuk informasi selengkapnya tentang cakupan dan izin, lihat Cakupan dan izin di platform identitas Microsoft.
Catatan
Aplikasi dapat menangani token khusus aplikasi (permintaan dari aplikasi tanpa pengguna, seperti aplikasi daemon) dan ingin mengotorisasi aplikasi tertentu di beberapa penyewa, bukan ID perwakilan layanan individual. Dalam hal ini, appid
klaim (untuk token v1.0) atau azp
klaim (untuk token v2.0) dapat digunakan untuk otorisasi subjek. Namun, saat menggunakan klaim ini, aplikasi harus memastikan bahwa token dikeluarkan langsung untuk aplikasi dengan memvalidasi idtyp
klaim opsional. Hanya token jenis app
yang dapat diotorisasi dengan cara ini, karena token pengguna yang didelegasikan berpotensi diperoleh oleh entitas selain aplikasi.
Langkah berikutnya
- Pelajari selengkapnya tentang token dan klaim dalam Token keamanan