Memilih solusi manajemen identitas

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 manajemen identitas, lihat Apa itu manajemen identitas dan akses?. Banyak solusi manajemen identitas 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 identitas dasar 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:

Untuk sebagian besar skenario, ini mungkin satu-satunya penyedia yang diperlukan.

Untuk mempelajari selengkapnya:

Dalam skenario lain, server atau layanan yang mengelola autentikasi dan identitas 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 adalahcookie, 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. Cookies 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 cookies 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 identitas menggunakan JSformat ON 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. Cookies 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 identitas pihak 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 identitas.

Beberapa solusi gratis dan sumber terbuka, sementara yang lain berlisensi komersial. Lihat solusi manajemen identitas untuk daftar opsi yang tersedia. Ada kemungkinan bahwa organisasi Anda sudah menggunakan IdP. 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 identitas. Penyedia layanan berbasis cloud:

  • Mengambil tanggung jawab penyimpanan data dengan aman.
  • menjaga perangkat lunak tetap terbarui dengan patch dan rilis keamanan terbaru.
  • Mematuhi peraturan privasi.

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:

Identity management decision flow

Tabel berikut mencantumkan beberapa hal yang perlu dipertimbangkan saat memilih solusi manajemen identitas Anda.

Fitur Host mandiri (infrastruktur atau kontainer) Awan
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