Gambaran umum autentikasi ASP.NET Core

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:

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:

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:

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

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: bearer header.

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:

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:

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

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: bearer header.

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 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:

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:

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

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: bearer header.

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: