Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Dengan Mike Rousos
Autentikasi adalah proses penentuan identitas pengguna. Authorization adalah proses menentukan apakah pengguna memiliki access ke sumber daya. Dalam ASP.NET Core, autentikasi ditangani oleh layanan autentikasi, IAuthenticationService, yang digunakan oleh autentikasi middleware. Layanan autentikasi menggunakan pengendali autentikasi terdaftar untuk melakukan tindakan terkait autentikasi. Contoh tindakan terkait autentikasi meliputi:
- Mengautentikasi pengguna.
- Menanggapi saat pengguna yang belum diautentikasi mencoba mengakses sumber daya yang terbatas.
Pengendali autentikasi terdaftar dan opsi konfigurasinya disebut "skema".
Skema autentikasi ditentukan dengan mendaftarkan layanan autentikasi di Program.cs:
- Dengan memanggil metode ekstensi khusus skema setelah panggilan ke AddAuthentication, seperti AddJwtBearer atau AddCookie. Metode ekstensi ini menggunakan AuthenticationBuilder.AddScheme untuk mendaftarkan skema dengan pengaturan yang sesuai.
- Lebih jarang, dengan memanggil
AuthenticationBuilder.AddSchemesecara langsung.
Misalnya, kode berikut mendaftarkan layanan autentikasi dan handler untuk cookieJWT dan skema autentikasi pembawa:
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
options => builder.Configuration.Bind("JwtSettings", options))
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
options => builder.Configuration.Bind("CookieSettings", options));
Parameter AddAuthenticationJwtBearerDefaults.AuthenticationScheme adalah nama skema yang akan digunakan secara default saat skema tertentu tidak diminta.
Jika beberapa skema digunakan, kebijakan otorisasi (atau atribut otorisasi) dapat menentukan skema autentikasi (atau skema) yang mereka andalkan untuk mengautentikasi pengguna. Dalam contoh di atas, skema autentikasi cookie dapat digunakan dengan menetapkan namanya (CookieAuthenticationDefaults.AuthenticationScheme secara default, meskipun nama yang berbeda dapat diberikan saat memanggil AddCookie).
Dalam beberapa kasus, panggilan ke AddAuthentication secara otomatis dilakukan dengan metode ekstensi lainnya. Misalnya, saat menggunakan ASP.NET Core Identity, AddAuthentication dipanggil secara internal.
Middleware Autentikasi ditambahkan di Program.cs dengan memanggil UseAuthentication. Memanggil UseAuthentication akan mendaftarkan middleware yang menggunakan skema autentikasi yang terdaftar sebelumnya. Panggil UseAuthentication sebelum middleware apa pun yang bergantung pada pengguna yang diautentikasi.
Konsep autentikasi
Autentikasi bertanggung jawab untuk menyediakan ClaimsPrincipal yang diperlukan untuk otorisasi dalam membuat keputusan izin. Ada beberapa pendekatan skema autentikasi untuk memilih penangan autentikasi mana yang bertanggung jawab untuk membuat kumpulan klaim yang benar:
- Skema autentikasi
- Skema autentikasi default, dibahas di dua bagian berikutnya.
- Atur langsung HttpContext.User.
Ketika hanya ada satu skema autentikasi yang terdaftar, itu menjadi skema default. Jika beberapa skema terdaftar dan skema default tidak ditentukan, skema harus ditentukan dalam atribut otorisasi, jika tidak, kesalahan berikut dilemparkan:
InvalidOperationException: Tidak ada authenticationScheme yang ditentukan, dan tidak ada DefaultAuthenticateScheme yang ditemukan. Skema default dapat diatur menggunakan AddAuthentication(string defaultScheme) atau AddAuthentication(Action<AuthenticationOptions> configureOptions).
DefaultScheme
Ketika hanya ada satu skema autentikasi yang terdaftar, skema autentikasi tunggal:
- Secara otomatis digunakan sebagai DefaultScheme.
- Menghilangkan kebutuhan untuk menentukan
DefaultSchemedalam AddAuthentication(IServiceCollection) atau AddAuthenticationCore(IServiceCollection).
Untuk menonaktifkan secara otomatis menggunakan skema autentikasi tunggal sebagai DefaultScheme, panggil AppContext.SetSwitch("Microsoft.AspNetCore.Authentication.SuppressAutoDefaultScheme").
Skema autentikasi
Skema autentikasi dapat memilih penangan autentikasi mana yang bertanggung jawab untuk membuat kumpulan klaim yang benar. Untuk informasi lebih lanjut, lihat Otorisasi dengan skema tertentu.
Skema autentikasi adalah nama yang sesuai dengan:
- Pengelola autentikasi.
- Opsi untuk mengonfigurasi instans tersebut dari pengendali.
Skema berguna sebagai mekanisme untuk merujuk pada perilaku autentikasi, permintaan, dan larangan dari penangan terkait. Misalnya, kebijakan otorisasi dapat menggunakan nama skema untuk menentukan skema autentikasi (atau skema) mana yang harus digunakan untuk mengautentikasi pengguna. Saat mengonfigurasi autentikasi, menentukan skema autentikasi default adalah hal yang umum. Skema default digunakan kecuali jika sumber daya meminta skema tertentu. Anda juga dapat:
- Menentukan skema default yang berbeda untuk mengautentikasi, meminta, dan melarang tindakan.
- Gabungkan beberapa skema menjadi satu menggunakan skema kebijakan.
Pengelola Autentikasi
Sebuah pengelola autentikasi
- Adalah tipe yang mengimplementasikan perilaku skema.
- Berasal dari IAuthenticationHandler atau AuthenticationHandler<TOptions>.
- Memiliki tanggung jawab utama untuk mengautentikasi pengguna.
Berdasarkan konfigurasi skema autentikasi dan konteks permintaan yang masuk, pengelola autentikasi:
- Buat objek AuthenticationTicket yang mewakili identitas pengguna jika autentikasi berhasil.
- Mengembalikan 'tidak ada hasil' atau 'gagal' jika autentikasi tidak berhasil.
- Menggunakan metode untuk tantang dan tindakan larangan ketika pengguna mencoba mengakses sumber daya.
- Mereka tidak berwenang untuk mengakses (terlarang).
- Ketika tidak diautentikasi (tantangan).
RemoteAuthenticationHandler<TOptions> Vs AuthenticationHandler<TOptions>
RemoteAuthenticationHandler<TOptions> adalah kelas untuk autentikasi yang memerlukan langkah autentikasi jarak jauh. Saat langkah autentikasi jarak jauh selesai, penangan memanggil kembali ke CallbackPath yang diatur oleh penangan. Pengendali menyelesaikan langkah autentikasi menggunakan informasi yang diteruskan ke jalur callback HandleRemoteAuthenticateAsync.
OAuth 2.0 dan OIDC keduanya menggunakan pola ini.
JWT dan cookie tidak karena mereka dapat langsung menggunakan header pembawa dan cookie untuk mengautentikasi. Penyedia yang dihosting dari jarak jauh dalam hal ini:
- Merupakan penyedia autentikasi.
- Contohnya termasuk Facebook, Twitter, Google, Microsoft, dan penyedia OIDC lainnya yang menangani autentikasi pengguna menggunakan mekanisme penangan.
Autentikasi
Tindakan autentikasi dari skema autentikasi bertanggung jawab untuk membangun identitas pengguna berdasarkan konteks permintaan. Ini mengembalikan AuthenticateResult yang menunjukkan apakah autentikasi berhasil dan, jika demikian, identitas pengguna dalam tiket autentikasi. Lihat AuthenticateAsync. Contoh autentikasi meliputi:
- Skema autentikasi cookie yang membangun identitas pengguna dari cookie.
- JWT Skema pembawa mendeserialisasi dan memvalidasi JWT token pembawa untuk membangun identitas pengguna.
Tantangan
Permintaan autentikasi dipanggil oleh Otorisasi ketika pengguna yang tidak diautentikasi meminta titik akhir yang memerlukan autentikasi. Permintaan autentikasi diterbitkan, misalnya, ketika pengguna anonim meminta sumber daya terbatas atau mengikuti tautan masuk. Otorisasi memanggil tantangan menggunakan skema autentikasi yang ditentukan, atau default jika tidak ada yang ditentukan. Lihat ChallengeAsync. Contoh permintaan autentikasi meliputi:
- Skema autentikasi cookie mengalihkan pengguna ke halaman masuk.
-
JWT Skema pembawa mengembalikan hasil 401 dengan
www-authenticate: bearerheader.
Aksi tantangan harus memberi tahu pengguna mekanisme autentikasi yang harus digunakan untuk mengakses sumber daya yang diminta.
Melarang
Tindakan pelarangan dalam skema autentikasi dipanggil oleh sistem otorisasi ketika seorang pengguna yang telah diautentikasi mencoba mengakses sumber daya yang tidak diizinkan untuk diakses. Lihat ForbidAsync. Contoh larangan autentikasi meliputi:
- Skema autentikasi cookie yang mengalihkan pengguna ke halaman yang menunjukkan bahwa akses dilarang.
- JWT Skema pembawa mengembalikan hasil 403.
- Skema autentikasi kustom yang dialihkan ke halaman tempat pengguna dapat meminta access ke sumber daya.
Tindakan larangan dapat memberi tahu pengguna:
- Mereka diautentikasi.
- Mereka tidak diizinkan untuk mengakses sumber daya yang diminta.
Lihat tautan berikut untuk mengetahui perbedaan antara tantangan dan melarang.
Penyedia autentikasi untuk setiap penyewa
ASP.NET Core tidak memiliki solusi bawaan untuk autentikasi multi-tenant. Meskipun pelanggan dapat menulisnya menggunakan fitur bawaan, sebaiknya pelanggan mempertimbangkan Orchard Core, ABP Framework, atau Finbuckle.MultiTenant untuk autentikasi multi-penyewa.
Orchard Core adalah:
- Kerangka kerja aplikasi yang bersifat sumber terbuka, modular, dan multi-penyewa yang dibangun dengan ASP.NET Core.
- Sistem manajemen konten (CMS) yang dibangun di atas kerangka kerja aplikasi tersebut.
Lihat sumber Orchard Core untuk contoh penyedia autentikasi per penyewa.
Kerangka Kerja ABP mendukung berbagai pola arsitektur termasuk modularitas, mikroservis, desain terarah domain, dan multi-tenant. Lihat sumber ABP Framework di GitHub.
Finbuckle.MultiTenant:
- Sumber terbuka
- Menyediakan resolusi untuk klien
- Ringan
- Menyediakan isolasi data
- Mengonfigurasi perilaku aplikasi secara unik untuk setiap penyewa
Sumber Daya Tambahan:
Dengan Mike Rousos
Autentikasi adalah proses penentuan identitas pengguna. Authorization adalah proses menentukan apakah pengguna memiliki access ke sumber daya. Dalam ASP.NET Core, autentikasi ditangani oleh layanan autentikasi, IAuthenticationService, yang digunakan oleh autentikasi middleware. Layanan autentikasi menggunakan pengendali autentikasi terdaftar untuk melakukan tindakan terkait autentikasi. Contoh tindakan terkait autentikasi meliputi:
- Mengautentikasi pengguna.
- Menanggapi saat pengguna yang belum diautentikasi mencoba mengakses sumber daya yang terbatas.
Pengendali autentikasi terdaftar dan opsi konfigurasinya disebut "skema".
Skema autentikasi ditentukan dengan mendaftarkan layanan autentikasi di Program.cs:
- Dengan memanggil metode ekstensi khusus skema setelah panggilan ke AddAuthentication, seperti AddJwtBearer atau AddCookie. Metode ekstensi ini menggunakan AuthenticationBuilder.AddScheme untuk mendaftarkan skema dengan pengaturan yang sesuai.
- Lebih jarang, dengan memanggil
AuthenticationBuilder.AddSchemesecara langsung.
Misalnya, kode berikut mendaftarkan layanan autentikasi dan handler untuk cookieJWT dan skema autentikasi pembawa:
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
options => builder.Configuration.Bind("JwtSettings", options))
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
options => builder.Configuration.Bind("CookieSettings", options));
Parameter AddAuthenticationJwtBearerDefaults.AuthenticationScheme adalah nama skema yang akan digunakan secara default saat skema tertentu tidak diminta.
Jika beberapa skema digunakan, kebijakan otorisasi (atau atribut otorisasi) dapat menentukan skema autentikasi (atau skema) yang mereka andalkan untuk mengautentikasi pengguna. Dalam contoh di atas, skema autentikasi cookie dapat digunakan dengan menetapkan namanya (CookieAuthenticationDefaults.AuthenticationScheme secara default, meskipun nama yang berbeda dapat diberikan saat memanggil AddCookie).
Dalam beberapa kasus, panggilan ke AddAuthentication secara otomatis dilakukan dengan metode ekstensi lainnya. Misalnya, saat menggunakan ASP.NET Core Identity, AddAuthentication dipanggil secara internal.
Middleware Autentikasi ditambahkan di Program.cs dengan memanggil UseAuthentication. Memanggil UseAuthentication akan mendaftarkan middleware yang menggunakan skema autentikasi yang terdaftar sebelumnya. Panggil UseAuthentication sebelum middleware apa pun yang bergantung pada pengguna yang diautentikasi.
Konsep autentikasi
Autentikasi bertanggung jawab untuk menyediakan ClaimsPrincipal yang diperlukan untuk otorisasi dalam membuat keputusan izin. Ada beberapa pendekatan skema autentikasi untuk memilih penangan autentikasi mana yang bertanggung jawab untuk membuat kumpulan klaim yang benar:
- Skema autentikasi
- Skema autentikasi default, dibahas di bagian selanjutnya.
- Atur langsung HttpContext.User.
Tidak ada pemeriksaan skema secara otomatis. Jika skema default tidak ditentukan, skema harus ditentukan dalam atribut otorisasi, jika tidak, kesalahan berikut akan muncul:
InvalidOperationException: Tidak ada authenticationScheme yang ditentukan, dan tidak ada DefaultAuthenticateScheme yang ditemukan. Skema default dapat diatur menggunakan AddAuthentication(string defaultScheme) atau AddAuthentication(Action<AuthenticationOptions> configureOptions).
Skema autentikasi
Skema autentikasi dapat memilih penangan autentikasi mana yang bertanggung jawab untuk membuat kumpulan klaim yang benar. Untuk informasi lebih lanjut, lihat Otorisasi dengan skema tertentu.
Skema autentikasi adalah nama yang sesuai dengan:
- Pengelola autentikasi.
- Opsi untuk mengonfigurasi instans tersebut dari pengendali.
Skema berguna sebagai mekanisme untuk merujuk pada perilaku autentikasi, permintaan, dan larangan dari penangan terkait. Misalnya, kebijakan otorisasi dapat menggunakan nama skema untuk menentukan skema autentikasi (atau skema) mana yang harus digunakan untuk mengautentikasi pengguna. Saat mengonfigurasi autentikasi, menentukan skema autentikasi default adalah hal yang umum. Skema default digunakan kecuali jika sumber daya meminta skema tertentu. Anda juga dapat:
- Menentukan skema default yang berbeda untuk mengautentikasi, meminta, dan melarang tindakan.
- Gabungkan beberapa skema menjadi satu menggunakan skema kebijakan.
Pengelola Autentikasi
Sebuah pengelola autentikasi
- Adalah tipe yang mengimplementasikan perilaku skema.
- Berasal dari IAuthenticationHandler atau AuthenticationHandler<TOptions>.
- Memiliki tanggung jawab utama untuk mengautentikasi pengguna.
Berdasarkan konfigurasi skema autentikasi dan konteks permintaan yang masuk, pengelola autentikasi:
- Buat objek AuthenticationTicket yang mewakili identitas pengguna jika autentikasi berhasil.
- Mengembalikan 'tidak ada hasil' atau 'gagal' jika autentikasi tidak berhasil.
- Menggunakan metode untuk tantang dan tindakan larangan ketika pengguna mencoba mengakses sumber daya.
- Mereka tidak berwenang untuk mengakses (terlarang).
- Ketika tidak diautentikasi (tantangan).
RemoteAuthenticationHandler<TOptions> Vs AuthenticationHandler<TOptions>
RemoteAuthenticationHandler<TOptions> adalah kelas untuk autentikasi yang memerlukan langkah autentikasi jarak jauh. Saat langkah autentikasi jarak jauh selesai, penangan memanggil kembali ke CallbackPath yang diatur oleh penangan. Pengendali menyelesaikan langkah autentikasi menggunakan informasi yang diteruskan ke jalur callback HandleRemoteAuthenticateAsync.
OAuth 2.0 dan OIDC keduanya menggunakan pola ini.
JWT dan cookie tidak karena mereka dapat langsung menggunakan header pembawa dan cookie untuk mengautentikasi. Penyedia yang dihosting dari jarak jauh dalam hal ini:
- Merupakan penyedia autentikasi.
- Contohnya termasuk Facebook, Twitter, Google, Microsoft, dan penyedia OIDC lainnya yang menangani autentikasi pengguna menggunakan mekanisme penangan.
Autentikasi
Tindakan autentikasi dari skema autentikasi bertanggung jawab untuk membangun identitas pengguna berdasarkan konteks permintaan. Ini mengembalikan AuthenticateResult yang menunjukkan apakah autentikasi berhasil dan, jika demikian, identitas pengguna dalam tiket autentikasi. Lihat AuthenticateAsync. Contoh autentikasi meliputi:
- Skema autentikasi cookie yang membangun identitas pengguna dari cookie.
- JWT Skema pembawa mendeserialisasi dan memvalidasi JWT token pembawa untuk membangun identitas pengguna.
Tantangan
Permintaan autentikasi dipanggil oleh Otorisasi ketika pengguna yang tidak diautentikasi meminta titik akhir yang memerlukan autentikasi. Permintaan autentikasi diterbitkan, misalnya, ketika pengguna anonim meminta sumber daya terbatas atau mengikuti tautan masuk. Otorisasi memanggil tantangan menggunakan skema autentikasi yang ditentukan, atau default jika tidak ada yang ditentukan. Lihat ChallengeAsync. Contoh permintaan autentikasi meliputi:
- Skema autentikasi cookie mengalihkan pengguna ke halaman masuk.
-
JWT Skema pembawa mengembalikan hasil 401 dengan
www-authenticate: bearerheader.
Aksi tantangan harus memberi tahu pengguna mekanisme autentikasi yang harus digunakan untuk mengakses sumber daya yang diminta.
Melarang
Tindakan pelarangan dalam skema autentikasi dipanggil oleh sistem otorisasi ketika seorang pengguna yang telah diautentikasi mencoba mengakses sumber daya yang tidak diizinkan untuk diakses. Lihat ForbidAsync. Contoh larangan autentikasi meliputi:
- Skema autentikasi cookie yang mengalihkan pengguna ke halaman yang menunjukkan bahwa akses dilarang.
- JWT Skema pembawa mengembalikan hasil 403.
- Skema autentikasi kustom yang dialihkan ke halaman tempat pengguna dapat meminta access ke sumber daya.
Tindakan larangan dapat memberi tahu pengguna:
- Mereka diautentikasi.
- Mereka tidak diizinkan untuk mengakses sumber daya yang diminta.
Lihat tautan berikut untuk mengetahui perbedaan antara tantangan dan melarang.
- Tantang dan larang dengan pengelola sumber daya operasional.
- Perbedaan antara tantangan dan larangan.
Penyedia autentikasi untuk setiap penyewa
ASP.NET Core tidak memiliki solusi bawaan untuk autentikasi multi-tenant. Meskipun pelanggan dapat menulisnya menggunakan fitur bawaan, sebaiknya pelanggan mempertimbangkan Orchard Core atau ABP Framework untuk autentikasi multi-tenant.
Orchard Core adalah:
- Kerangka kerja aplikasi yang bersifat sumber terbuka, modular, dan multi-penyewa yang dibangun dengan ASP.NET Core.
- Sistem manajemen konten (CMS) yang dibangun di atas kerangka kerja aplikasi tersebut.
Lihat sumber Orchard Core untuk contoh penyedia autentikasi per penyewa.
Kerangka Kerja ABP mendukung berbagai pola arsitektur termasuk modularitas, mikroservis, desain terarah domain, dan multi-tenant. Lihat sumber ABP Framework di GitHub.
Sumber Daya Tambahan:
Dengan Mike Rousos
Autentikasi adalah proses penentuan identitas pengguna. Authorization adalah proses menentukan apakah pengguna memiliki access ke sumber daya. Dalam ASP.NET Core, autentikasi ditangani oleh layanan autentikasi, IAuthenticationService, yang digunakan oleh autentikasi middleware. Layanan autentikasi menggunakan pengendali autentikasi terdaftar untuk melakukan tindakan terkait autentikasi. Contoh tindakan terkait autentikasi meliputi:
- Mengautentikasi pengguna.
- Menanggapi saat pengguna yang belum diautentikasi mencoba mengakses sumber daya yang terbatas.
Pengendali autentikasi terdaftar dan opsi konfigurasinya disebut "skema".
Skema autentikasi ditentukan dengan mendaftarkan layanan autentikasi di Startup.ConfigureServices:
- Dengan memanggil metode ekstensi khusus skema setelah panggilan ke AddAuthentication (seperti AddJwtBearer atau AddCookie, misalnya). Metode ekstensi ini menggunakan AuthenticationBuilder.AddScheme untuk mendaftarkan skema dengan pengaturan yang sesuai.
- Lebih jarang, dengan memanggil
AuthenticationBuilder.AddSchemesecara langsung.
Misalnya, kode berikut mendaftarkan layanan autentikasi dan handler untuk cookieJWT dan skema autentikasi pembawa:
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(JwtBearerDefaults.AuthenticationScheme,
options => Configuration.Bind("JwtSettings", options))
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme,
options => Configuration.Bind("CookieSettings", options));
Parameter AddAuthenticationJwtBearerDefaults.AuthenticationScheme adalah nama skema yang akan digunakan secara default saat skema tertentu tidak diminta.
Jika beberapa skema digunakan, kebijakan otorisasi (atau atribut otorisasi) dapat menentukan skema autentikasi (atau skema) yang mereka andalkan untuk mengautentikasi pengguna. Dalam contoh di atas, skema autentikasi cookie dapat digunakan dengan menetapkan namanya (CookieAuthenticationDefaults.AuthenticationScheme secara default, meskipun nama yang berbeda dapat diberikan saat memanggil AddCookie).
Dalam beberapa kasus, panggilan ke AddAuthentication secara otomatis dilakukan dengan metode ekstensi lainnya. Misalnya, saat menggunakan ASP.NET Core Identity, AddAuthentication dipanggil secara internal.
Middleware Autentikasi ditambahkan di Startup.Configure dengan memanggil UseAuthentication. Memanggil UseAuthentication akan mendaftarkan middleware yang menggunakan skema autentikasi yang terdaftar sebelumnya. Panggil UseAuthentication sebelum middleware apa pun yang bergantung pada pengguna yang diautentikasi. Saat menggunakan perutean titik akhir, panggilan ke UseAuthentication harus dilakukan:
- Setelah UseRouting, informasi rute tersedia untuk membuat keputusan autentikasi.
- Sebelum UseEndpoints, agar pengguna diautentikasi sebelum mengakses titik akhir.
Konsep autentikasi
Autentikasi bertanggung jawab untuk menyediakan ClaimsPrincipal yang diperlukan untuk otorisasi dalam membuat keputusan izin. Ada beberapa pendekatan skema autentikasi untuk memilih penangan autentikasi mana yang bertanggung jawab untuk membuat kumpulan klaim yang benar:
- Skema autentikasi
- Skema autentikasi default, dibahas di bagian selanjutnya.
- Atur langsung HttpContext.User.
Tidak ada pemeriksaan skema secara otomatis. Jika skema default tidak ditentukan, skema harus ditentukan dalam atribut otorisasi, jika tidak, kesalahan berikut akan muncul:
InvalidOperationException: Tidak ada authenticationScheme yang ditentukan, dan tidak ada DefaultAuthenticateScheme yang ditemukan. Skema default dapat diatur menggunakan AddAuthentication(string defaultScheme) atau AddAuthentication(Action<AuthenticationOptions> configureOptions).
Skema autentikasi
Skema autentikasi dapat memilih penangan autentikasi mana yang bertanggung jawab untuk membuat kumpulan klaim yang benar. Untuk informasi lebih lanjut, lihat Otorisasi dengan skema tertentu.
Skema autentikasi adalah nama yang sesuai dengan:
- Pengelola autentikasi.
- Opsi untuk mengonfigurasi instans tersebut dari pengendali.
Skema berguna sebagai mekanisme untuk merujuk pada perilaku autentikasi, permintaan, dan larangan dari penangan terkait. Misalnya, kebijakan otorisasi dapat menggunakan nama skema untuk menentukan skema autentikasi (atau skema) mana yang harus digunakan untuk mengautentikasi pengguna. Saat mengonfigurasi autentikasi, menentukan skema autentikasi default adalah hal yang umum. Skema default digunakan kecuali jika sumber daya meminta skema tertentu. Anda juga dapat:
- Menentukan skema default yang berbeda untuk mengautentikasi, meminta, dan melarang tindakan.
- Gabungkan beberapa skema menjadi satu menggunakan skema kebijakan.
Pengelola Autentikasi
Sebuah pengelola autentikasi
- Adalah tipe yang mengimplementasikan perilaku skema.
- Berasal dari IAuthenticationHandler atau AuthenticationHandler<TOptions>.
- Memiliki tanggung jawab utama untuk mengautentikasi pengguna.
Berdasarkan konfigurasi skema autentikasi dan konteks permintaan yang masuk, pengelola autentikasi:
- Buat objek AuthenticationTicket yang mewakili identitas pengguna jika autentikasi berhasil.
- Mengembalikan 'tidak ada hasil' atau 'gagal' jika autentikasi tidak berhasil.
- Menggunakan metode untuk tantang dan tindakan larangan ketika pengguna mencoba mengakses sumber daya.
- Mereka tidak berwenang untuk mengakses (terlarang).
- Ketika tidak diautentikasi (tantangan).
RemoteAuthenticationHandler<TOptions> Vs AuthenticationHandler<TOptions>
RemoteAuthenticationHandler<TOptions> adalah kelas untuk autentikasi yang memerlukan langkah autentikasi jarak jauh. Saat langkah autentikasi jarak jauh selesai, penangan memanggil kembali ke CallbackPath yang diatur oleh penangan. Pengendali menyelesaikan langkah autentikasi menggunakan informasi yang diteruskan ke jalur callback HandleRemoteAuthenticateAsync.
OAuth 2.0 dan OIDC keduanya menggunakan pola ini.
JWT dan cookie tidak karena mereka dapat langsung menggunakan header pembawa dan cookie untuk mengautentikasi. Penyedia yang dihosting dari jarak jauh dalam hal ini:
- Merupakan penyedia autentikasi.
- Contohnya termasuk Facebook, Twitter, Google, Microsoft, dan penyedia OIDC lainnya yang menangani autentikasi pengguna menggunakan mekanisme penangan.
Autentikasi
Tindakan autentikasi dari skema autentikasi bertanggung jawab untuk membangun identitas pengguna berdasarkan konteks permintaan. Ini mengembalikan AuthenticateResult yang menunjukkan apakah autentikasi berhasil dan, jika demikian, identitas pengguna dalam tiket autentikasi. Lihat AuthenticateAsync. Contoh autentikasi meliputi:
- Skema autentikasi cookie yang membangun identitas pengguna dari cookie.
- JWT Skema pembawa mendeserialisasi dan memvalidasi JWT token pembawa untuk membangun identitas pengguna.
Tantangan
Permintaan autentikasi dipanggil oleh Otorisasi ketika pengguna yang tidak diautentikasi meminta titik akhir yang memerlukan autentikasi. Permintaan autentikasi diterbitkan, misalnya, ketika pengguna anonim meminta sumber daya terbatas atau mengikuti tautan masuk. Otorisasi memanggil tantangan menggunakan skema autentikasi yang ditentukan, atau default jika tidak ada yang ditentukan. Lihat ChallengeAsync. Contoh permintaan autentikasi meliputi:
- Skema autentikasi cookie mengalihkan pengguna ke halaman masuk.
-
JWT Skema pembawa mengembalikan hasil 401 dengan
www-authenticate: bearerheader.
Aksi tantangan harus memberi tahu pengguna mekanisme autentikasi yang harus digunakan untuk mengakses sumber daya yang diminta.
Melarang
Tindakan pelarangan dalam skema autentikasi dipanggil oleh sistem otorisasi ketika seorang pengguna yang telah diautentikasi mencoba mengakses sumber daya yang tidak diizinkan untuk diakses. Lihat ForbidAsync. Contoh larangan autentikasi meliputi:
- Skema autentikasi cookie yang mengalihkan pengguna ke halaman yang menunjukkan bahwa akses dilarang.
- JWT Skema pembawa mengembalikan hasil 403.
- Skema autentikasi kustom yang dialihkan ke halaman tempat pengguna dapat meminta access ke sumber daya.
Tindakan larangan dapat memberi tahu pengguna:
- Mereka diautentikasi.
- Mereka tidak diizinkan untuk mengakses sumber daya yang diminta.
Lihat tautan berikut untuk mengetahui perbedaan antara tantangan dan melarang.
Penyedia autentikasi untuk setiap penyewa
Framework ASP.NET Core tidak memiliki solusi bawaan untuk autentikasi multi-penyewa. Meskipun pelanggan dapat menulis aplikasi dengan autentikasi multi-penyewa, sebaiknya gunakan salah satu kerangka kerja aplikasi ASP.NET Core berikut yang mendukung autentikasi multi-penyewa.
Orchard Core adalah kerangka kerja aplikasi sumber terbuka, modular, dan multi-penyewa yang dibangun dengan ASP.NET Core yang juga menyediakan sistem manajemen konten (CMS). Lihat sumber Orchard Core untuk contoh penyedia autentikasi per penyewa.
ABP Framework mendukung berbagai pola arsitektur, termasuk modularitas, mikroservis, desain berorientasi domain, dan multitenansi. Lihat sumber ABP Framework di GitHub.
Sumber Daya Tambahan:
ASP.NET Core