identity Pilih solusi manajemen
Sebagian besar aplikasi web mendukung autentikasi untuk memastikan bahwa pengguna adalah orang yang mereka klaim. Pengguna mungkin orang atau aplikasi lain. Manajemen akses memastikan pengguna hanya dapat melihat dan memodifikasi informasi yang diizinkan untuk dilihat dan dimodifikasi. Misalnya, pengguna akhir tidak boleh memiliki akses ke bagian administratif situs web. Identity solusi manajemen dibangun untuk menangani persyaratan tugas terkait autentikasi dan otorisasi. Untuk mempelajari selengkapnya tentang identity manajemen, lihat Apa itu identity dan manajemen akses?. Banyak identity solusi manajemen untuk aplikasi web .NET tersedia, masing-masing dengan kemampuan dan persyaratan yang berbeda untuk digunakan atau diinstal. Artikel ini menyediakan panduan tentang cara memilih solusi yang tepat.
Manajemen dasar identity dengan ASP.NET Core Identity
ASP.NET Core dikirim dengan penyedia autentikasi bawaan: ASP.NET Core Identity. Penyedia mencakup API, UI, dan konfigurasi database backend untuk mendukung pengelolaan identitas pengguna, menyimpan kredensial pengguna, dan memberikan atau mencabut izin. Fitur lain yang didukungnya meliputi:
- Login eksternal
- Autentikasi dua faktor (2FA)
- Manajemen kata sandi
- Penguncian dan pengaktifan ulang akun
- Aplikasi Authenticator
Untuk sebagian besar skenario, ini mungkin satu-satunya penyedia yang diperlukan.
Untuk mempelajari selengkapnya:
- Baca Pengantar Identity pada ASP.NET Core
- Ikuti tutorial untuk membangun aplikasi web .NET aman Anda sendiri: Mengamankan aplikasi web .NET dengan kerangka kerja ASP.NET CoreIdentity.
Dalam skenario lain, server atau layanan yang mengelola autentikasi dan identity mungkin bermanfaat.
Menentukan apakah server OIDC diperlukan
Aplikasi web memerlukan cara untuk mengingat tindakan sebelumnya karena web, secara default, tidak memiliki status. Jika tidak, pengguna akan dipaksa untuk memasukkan kredensial mereka setiap kali mereka menavigasi ke halaman baru. Solusi umum untuk mengingat status adalah cookie, mekanisme berbasis browser untuk menyimpan data. Server web mengirimkan awal cookie, lalu browser menyimpannya dan mengirimkannya kembali dengan setiap permintaan. Ini dilakukan secara otomatis tanpa perlu pengembang menulis kode apa pun. Cookie mudah digunakan dan dibangun ke dalam browser tetapi dirancang untuk digunakan dalam satu situs web atau domain web. Solusi default yang disertakan dalam ASP.NET Core menggunakan cookieautentikasi berbasis.
Token adalah kontainer dengan metadata yang secara eksplisit diteruskan melalui header atau isi permintaan HTTP. Keuntungan utama token daripada cookie adalah bahwa mereka tidak terikat dengan aplikasi atau domain tertentu. Sebaliknya, token biasanya ditandatangani dengan kriptografi asimetris. Misalnya, server OIDC mengeluarkan token dengan informasi tentang identity menggunakan format JSON Web Token (JWT) yang mencakup penandatanganan. Kriptografi asimetris menggunakan kombinasi kunci privat yang hanya diketahui oleh penanda tangan, dan kunci publik yang dapat diketahui semua orang. Token juga dapat dienkripsi.
Token yang ditandatangani tidak dapat diubah karena kunci privat. Kunci publik:
- Memungkinkan untuk memvalidasi token untuk memastikan token belum diubah.
- Menjamin bahwa itu dihasilkan oleh entitas yang memegang kunci privat.
Kerugian utama untuk menggunakan token adalah bahwa mereka memerlukan layanan (biasanya server OIDC) untuk masalah dan memberikan validasi untuk token. Layanan harus diinstal, dikonfigurasi, dan dikelola.
Alasan umum server OIDC diperlukan adalah untuk aplikasi yang mengekspos API berbasis web yang digunakan oleh aplikasi lain. Untuk API berbasis web yang diekspos, UI klien seperti Aplikasi Halaman Tunggal (SPA), klien seluler, dan klien desktop dianggap sebagai bagian dari aplikasi yang sama. Contoh SPA termasuk Angular, React, dan Blazor WebAssembly. Jika aplikasi selain aplikasi web atau UI klien apa pun harus melakukan panggilan API yang aman ke aplikasi, Anda mungkin ingin menggunakan token. Jika Anda hanya memiliki UI klien, ASP.NET Core Identity menyediakan opsi untuk memperoleh token selama autentikasi. Token autentikasi yang dikeluarkan oleh ASP.NET Core Identity:
- Dapat digunakan oleh klien seluler dan desktop. Cookie lebih disukai daripada token untuk keamanan dan kesederhanaan.
- Tidak cocok untuk mengelola akses dari aplikasi pihak ketiga.
Alasan lain server OIDC diperlukan adalah untuk berbagi rincian masuk dengan aplikasi lain. Umumnya disebut sebagai akses menyeluruh, fitur ini memungkinkan pengguna untuk:
- Masuk sekali dengan formulir aplikasi web.
- Gunakan kredensial yang dihasilkan untuk mengautentikasi dengan aplikasi lain tanpa harus masuk lagi atau memilih kata sandi yang berbeda.
Server OIDC biasanya lebih disukai untuk menyediakan solusi yang aman dan dapat diskalakan untuk akses menyeluruh.
Untuk aplikasi yang tidak berbagi login dengan aplikasi lain, cara paling sederhana untuk mengamankan aplikasi dengan cepat adalah dengan menggunakan penyedia ASP.NET Core Identity bawaan. Jika tidak, server OIDC yang disediakan oleh solusi manajemen pihak identity ketiga diperlukan. Server OIDC tersedia sebagai:
- Produk yang Anda instal di server Anda, yang disebut host mandiri.
- Kontainer berjalan di host seperti Docker.
- Layanan berbasis web yang Anda integrasikan untuk mengelola identity.
Beberapa solusi gratis dan sumber terbuka, sementara yang lain berlisensi komersial. Lihat identity solusi manajemen untuk daftar opsi yang tersedia. Ada kemungkinan organisasi Anda sudah menggunakan identity penyedia. Dalam hal ini, mungkin masuk akal untuk menggunakan penyedia yang ada alih-alih pergi dengan solusi yang berbeda. Semua solusi utama menyediakan dokumentasi untuk mengonfigurasi ASP.NET Core untuk menggunakan produk atau layanan mereka.
Skenario terputus
Banyak solusi, seperti MICROSOFT Entra ID, berbasis cloud dan memerlukan koneksi Internet untuk berfungsi. Jika lingkungan Anda tidak mengizinkan konektivitas Internet, Anda tidak akan dapat menggunakan layanan.
ASP.NET Core Identity bekerja dengan baik dalam skenario yang terputus, seperti:
- Aplikasi tidak dapat mengakses Internet.
- Aplikasi harus tetap berfungsi pada jaringan lokal meskipun Internet terputus.
Jika Anda memerlukan server OIDC penuh untuk skenario terputus, pilih salah satu opsi berikut:
- Solusi yang memungkinkan Anda menginstal dan menjalankan layanan di komputer Anda sendiri.
- Jalankan layanan autentikasi secara lokal sebagai kontainer.
Memutuskan di mana data pengguna seperti rincian masuk disimpan
Faktor penting lainnya yang perlu dipertimbangkan adalah tempat data masuk pengguna disimpan. Banyak pengembang memilih layanan eksternal berbasis cloud seperti MICROSOFT Entra ID untuk mengelola identity. Penyedia layanan berbasis cloud:
- Mengambil tanggung jawab penyimpanan data dengan aman.
- menjaga perangkat lunak tetap terbarui dengan patch dan rilis keamanan terbaru.
- Sesuai dengan privacy peraturan.
Yang lain lebih suka menyimpan data di server mereka sendiri karena peraturan, kepatuhan, kebijakan, atau alasan lainnya.
Jika data disimpan di server Anda, Anda kemungkinan besar perlu memilih solusi yang dapat diinstal atau berbasis kontainer.
Identity vs server OIDC
Gunakan diagram berikut untuk membantu Anda memutuskan apakah akan menggunakan sistem ASP.NET Core Identity atau server OIDC untuk autentikasi dan otorisasi:
Tabel berikut ini mencantumkan beberapa hal yang perlu dipertimbangkan saat memilih solusi manajemen Anda identity .
Fitur | Host mandiri (infrastruktur atau kontainer) | Cloud |
---|---|---|
Integrasi aplikasi | Solusi lokal yang diimplementasikan sebagai pustaka atau kerangka kerja sering kali dapat diintegrasikan langsung di aplikasi Anda sendiri. Solusi berbasis kontainer memerlukan hand-off untuk terjadi antara aplikasi web Anda dan layanan berbasis kontainer. | Solusi berbasis cloud biasanya diintegrasikan pada titik tertentu dalam alur masuk Anda dan menyediakan konfigurasi untuk memperbarui UI agar sesuai dengan tema Anda, tetapi tingkat penyesuaian yang tersedia terbatas. |
Konfigurasi | Solusi host mandiri memerlukan konfigurasi perangkat lunak untuk lingkungan selain menyiapkan cara Anda ingin mengelola identitas. Solusi berbasis kontainer biasanya menyediakan UI berbasis web untuk konfigurasi. | Solusi berbasis cloud biasanya menyediakan UI berbasis web untuk konfigurasi. |
Kustomisasi | Solusi host mandiri biasanya sangat dapat disesuaikan, termasuk perubahan berbasis kode. Meskipun solusi kontainer memberikan opsi ekstensibilitas, solusi tersebut sering kali lebih terbatas. | Layanan berbasis cloud memungkinkan penyesuaian, tetapi biasanya terbatas pada perubahan berbasis konfigurasi. |
Pemeliharaan | Produk yang diinstal memerlukan sumber daya khusus untuk memastikan semua patch keamanan diterapkan secara tepat waktu dan untuk mengelola peningkatan. Proses peningkatan dan patch untuk kontainer biasanya lebih rendah gesekan dan hanya melibatkan penginstalan gambar kontainer yang disediakan. | Penyedia layanan mempertahankan solusi berbasis cloud mereka, termasuk menerapkan patch yang diperlukan dan menangani peningkatan. |
Penyimpanan kredensial pengguna | Anda bertanggung jawab atas tata kelola data dan penanganan pelanggaran. | Mengelola risiko yang terkait dengan penanganan kredensial pengguna, dan mematuhi peraturan. didelegasikan ke penyedia layanan. |
Untuk informasi selengkapnya tentang opsi yang tersedia, lihat Identity solusi manajemen untuk ASP.NET Core.
Langkah berikutnya
- Pelajari tentang JSON Web Tokens
- Telusuri aplikasi sampel dengan autentikasi/otorisasi dan identity untuk ASP.NET Core.
- Ikuti tutorial untuk mengamankan aplikasi web .NET menggunakan ASP.NET Core Identitybawaan .
- Pelajari selengkapnya tentang cara melindungi API web.
ASP.NET Core