Ringkasan autentikasi ASP.NET Core

Oleh Mike Rousos

Autentikasi adalah proses menentukan identitas pengguna. Otorisasi adalah proses untuk menentukan apakah pengguna memiliki akses ke sumber daya. Di ASP.NET Core, autentikasi ditangani oleh layanan autentikasi, IAuthenticationService, yang digunakan oleh middleware autentikasi. Layanan autentikasi menggunakan penangan autentikasi terdaftar untuk menyelesaikan tindakan terkait autentikasi. Contoh tindakan terkait autentikasi meliputi:

  • Mengautentikasi pengguna.
  • Merespons saat pengguna yang tidak diautentikasi mencoba mengakses sumber daya yang dibatasi.

Penangan autentikasi terdaftar dan opsi konfigurasinya disebut "skema".

Skema autentikasi ditentukan dengan mendaftarkan layanan autentikasi di Program.cs:

Misalnya, kode berikut mendaftarkan layanan dan penangan autentikasi untuk cookie dan skema autentikasi token pembawa JWT:

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 otorisasi untuk 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 autentikasiScheme 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:

  • Penangan autentikasi.
  • Opsi untuk mengonfigurasi instans khusus dari penangan.

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.

Penangan autentikasi

Penangan autentikasi:

Berdasarkan konfigurasi skema autentikasi dan konteks permintaan yang masuk, penangan autentikasi:

  • Membuat objek AuthenticationTicket yang mewakili identitas pengguna jika autentikasi berhasil.
  • Mengembalikan 'tidak ada hasil' atau 'gagal' jika autentikasi tidak berhasil.
  • Memiliki metode untuk tantangan dan tindakan terlarang ketika pengguna mencoba mengakses sumber daya:
    • Pengguna tidak berhak untuk mengakses (melarang).
    • Ketika pengguna tidak diautentikasi (diminta).

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. Penangan menyelesaikan langkah autentikasi menggunakan informasi yang diteruskan ke jalur panggilan balik HandleRemoteAuthenticateAsync. OAuth 2.0 dan OIDC keduanya menggunakan pola ini. JWT dan cookie tidak menggunakan pola ini karena dapat langsung menggunakan header token 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 skema autentikasi bertanggung jawab untuk membangun identitas pengguna berdasarkan konteks permintaan. Tindakan 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 menyusun identitas pengguna dari cookie.
  • Skema token pembawa JWT menghapus dan memvalidasi token pembawa JWT 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 permintaan 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.
  • Skema token pembawa JWT mengembalikan hasil 401 dengan header www-authenticate: bearer.

Tindakan permintaan harus memberi tahu pengguna mekanisme autentikasi apa yang digunakan untuk mengakses sumber daya yang diminta.

Larangan

Tindakan melarang skema autentikasi dipanggil oleh Otorisasi ketika pengguna yang diautentikasi mencoba mengakses sumber daya yang tidak diizinkan untuk mereka akses. Lihat ForbidAsync. Contoh larangan autentikasi meliputi:

  • Skema autentikasi cookie yang mengalihkan pengguna ke halaman yang menunjukkan bahwa akses dilarang.
  • Skema token pembawa JWT mengembalikan hasil 403.
  • Skema autentikasi khusus yang mengalihkan ke halaman tempat pengguna dapat meminta akses 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 permintaan dan larangan:

Penyedia autentikasi per penyewa

ASP.NET Core tidak memiliki solusi bawaan untuk autentikasi multi-penyewa. 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 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, layanan mikro, desain berbasis domain, dan multi-penyewa. Lihat sumber Kerangka Kerja ABP di GitHub.

Finbuckle.MultiTenant:

  • Sumber terbuka
  • Menyediakan resolusi penyewa
  • Ringan
  • Menyediakan isolasi data
  • Mengonfigurasi perilaku aplikasi secara unik untuk setiap penyewa

Sumber daya tambahan

Oleh Mike Rousos

Autentikasi adalah proses menentukan identitas pengguna. Otorisasi adalah proses untuk menentukan apakah pengguna memiliki akses ke sumber daya. Di ASP.NET Core, autentikasi ditangani oleh layanan autentikasi, IAuthenticationService, yang digunakan oleh middleware autentikasi. Layanan autentikasi menggunakan penangan autentikasi terdaftar untuk menyelesaikan tindakan terkait autentikasi. Contoh tindakan terkait autentikasi meliputi:

  • Mengautentikasi pengguna.
  • Merespons saat pengguna yang tidak diautentikasi mencoba mengakses sumber daya yang dibatasi.

Penangan autentikasi terdaftar dan opsi konfigurasinya disebut "skema".

Skema autentikasi ditentukan dengan mendaftarkan layanan autentikasi di Program.cs:

Misalnya, kode berikut mendaftarkan layanan dan penangan autentikasi untuk cookie dan skema autentikasi token pembawa JWT:

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 otorisasi untuk 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 autentikasiScheme 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:

  • Penangan autentikasi.
  • Opsi untuk mengonfigurasi instans khusus dari penangan.

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.

Penangan autentikasi

Penangan autentikasi:

Berdasarkan konfigurasi skema autentikasi dan konteks permintaan yang masuk, penangan autentikasi:

  • Membuat objek AuthenticationTicket yang mewakili identitas pengguna jika autentikasi berhasil.
  • Mengembalikan 'tidak ada hasil' atau 'gagal' jika autentikasi tidak berhasil.
  • Memiliki metode untuk tantangan dan tindakan terlarang ketika pengguna mencoba mengakses sumber daya:
    • Pengguna tidak berhak untuk mengakses (melarang).
    • Ketika pengguna tidak diautentikasi (diminta).

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. Penangan menyelesaikan langkah autentikasi menggunakan informasi yang diteruskan ke jalur panggilan balik HandleRemoteAuthenticateAsync. OAuth 2.0 dan OIDC keduanya menggunakan pola ini. JWT dan cookie tidak menggunakan pola ini karena dapat langsung menggunakan header token 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 skema autentikasi bertanggung jawab untuk membangun identitas pengguna berdasarkan konteks permintaan. Tindakan 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 menyusun identitas pengguna dari cookie.
  • Skema token pembawa JWT menghapus dan memvalidasi token pembawa JWT 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 permintaan 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.
  • Skema token pembawa JWT mengembalikan hasil 401 dengan header www-authenticate: bearer.

Tindakan permintaan harus memberi tahu pengguna mekanisme autentikasi apa yang digunakan untuk mengakses sumber daya yang diminta.

Larangan

Tindakan melarang skema autentikasi dipanggil oleh Otorisasi ketika pengguna yang diautentikasi mencoba mengakses sumber daya yang tidak diizinkan untuk mereka akses. Lihat ForbidAsync. Contoh larangan autentikasi meliputi:

  • Skema autentikasi cookie yang mengalihkan pengguna ke halaman yang menunjukkan bahwa akses dilarang.
  • Skema token pembawa JWT mengembalikan hasil 403.
  • Skema autentikasi khusus yang mengalihkan ke halaman tempat pengguna dapat meminta akses 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 permintaan dan larangan:

Penyedia autentikasi per penyewa

ASP.NET Core tidak memiliki solusi bawaan untuk autentikasi multi-penyewa. Meskipun pelanggan dapat menulisnya menggunakan fitur bawaan, sebaiknya pelanggan mempertimbangkan Orchard Core atau ABP Framework untuk autentikasi multi-penyewa.

Orchard Core adalah:

  • Kerangka kerja aplikasi 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, layanan mikro, desain berbasis domain, dan multi-penyewa. Lihat sumber Kerangka Kerja ABP di GitHub.

Sumber daya tambahan

Oleh Mike Rousos

Autentikasi adalah proses menentukan identitas pengguna. Otorisasi adalah proses untuk menentukan apakah pengguna memiliki akses ke sumber daya. Di ASP.NET Core, autentikasi ditangani oleh layanan autentikasi, IAuthenticationService, yang digunakan oleh middleware autentikasi. Layanan autentikasi menggunakan penangan autentikasi terdaftar untuk menyelesaikan tindakan terkait autentikasi. Contoh tindakan terkait autentikasi meliputi:

  • Mengautentikasi pengguna.
  • Merespons saat pengguna yang tidak diautentikasi mencoba mengakses sumber daya yang dibatasi.

Penangan autentikasi terdaftar dan opsi konfigurasinya disebut "skema".

Skema autentikasi ditentukan dengan mendaftarkan layanan autentikasi di Startup.ConfigureServices:

Misalnya, kode berikut mendaftarkan layanan dan penangan autentikasi untuk cookie dan skema autentikasi token pembawa JWT:

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, sehingga informasi rute tersedia untuk keputusan autentikasi.
  • Sebelum UseEndpoints, agar pengguna diautentikasi sebelum mengakses titik akhir.

Konsep autentikasi

Autentikasi bertanggung jawab untuk menyediakan ClaimsPrincipal otorisasi untuk 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 autentikasiScheme 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:

  • Penangan autentikasi.
  • Opsi untuk mengonfigurasi instans khusus dari penangan.

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.

Penangan autentikasi

Penangan autentikasi:

Berdasarkan konfigurasi skema autentikasi dan konteks permintaan yang masuk, penangan autentikasi:

  • Membuat objek AuthenticationTicket yang mewakili identitas pengguna jika autentikasi berhasil.
  • Mengembalikan 'tidak ada hasil' atau 'gagal' jika autentikasi tidak berhasil.
  • Memiliki metode untuk tantangan dan tindakan terlarang ketika pengguna mencoba mengakses sumber daya:
    • Pengguna tidak berhak untuk mengakses (melarang).
    • Ketika pengguna tidak diautentikasi (diminta).

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. Penangan menyelesaikan langkah autentikasi menggunakan informasi yang diteruskan ke jalur panggilan balik HandleRemoteAuthenticateAsync. OAuth 2.0 dan OIDC keduanya menggunakan pola ini. JWT dan cookie tidak menggunakan pola ini karena dapat langsung menggunakan header token 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 skema autentikasi bertanggung jawab untuk membangun identitas pengguna berdasarkan konteks permintaan. Tindakan 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 menyusun identitas pengguna dari cookie.
  • Skema token pembawa JWT menghapus dan memvalidasi token pembawa JWT 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 permintaan 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.
  • Skema token pembawa JWT mengembalikan hasil 401 dengan header www-authenticate: bearer.

Tindakan permintaan harus memberi tahu pengguna mekanisme autentikasi apa yang digunakan untuk mengakses sumber daya yang diminta.

Larangan

Tindakan melarang skema autentikasi dipanggil oleh Otorisasi ketika pengguna yang diautentikasi mencoba mengakses sumber daya yang tidak diizinkan untuk mereka akses. Lihat ForbidAsync. Contoh larangan autentikasi meliputi:

  • Skema autentikasi cookie yang mengalihkan pengguna ke halaman yang menunjukkan bahwa akses dilarang.
  • Skema token pembawa JWT mengembalikan hasil 403.
  • Skema autentikasi khusus yang mengalihkan ke halaman tempat pengguna dapat meminta akses 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 permintaan dan larangan:

Penyedia autentikasi per penyewa

Kerangka 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

Orchard Core. Lihat sumber Orchard Core untuk contoh penyedia autentikasi per penyewa.

Kerangka Kerja ABP

Kerangka Kerja ABP mendukung berbagai pola arsitektur termasuk modularitas, layanan mikro, desain berbasis domain, dan multi-penyewa. Lihat sumber Kerangka Kerja ABP di GitHub.

Sumber daya tambahan