Membatasi Otentikasi Windows dan JWT ke Rute Tertentu di ASP.NET Core

Temp mail SuperHeros
Membatasi Otentikasi Windows dan JWT ke Rute Tertentu di ASP.NET Core
Membatasi Otentikasi Windows dan JWT ke Rute Tertentu di ASP.NET Core

Menyeimbangkan Skema Otentikasi untuk Perutean Aman

Seiring berkembangnya aplikasi web modern, pengembang sering kali menghadapi tantangan dalam menerapkan mekanisme autentikasi yang kuat, aman, dan fleksibel. Dalam kasus Anda, Anda menggunakan Otentikasi Pembawa JWT untuk beberapa rute dan Otentikasi Windows (Negosiasi) untuk rute lainnya. Namun, masalah rumit muncul ketika kedua skema autentikasi diterapkan secara global, sehingga menyebabkan kebingungan pada header respons. Secara khusus, Anda melihat header `WWW-Authenticate` yang tidak diinginkan untuk rute JWT yang mencakup `Bearer` dan `Negotiate`, sementara hanya `Bearer` yang harus ada.

Untuk pengembang seperti Anda, tujuan utamanya adalah memastikan bahwa setiap rute merespons dengan skema autentikasi yang benar. Artinya Rute yang dilindungi JWT hanya boleh mengirim `WWW-Authenticate: Bearer`, dan Windows Authentication Route hanya boleh mengirim `WWW-Authenticate: Negotiate`. Bayangkan Anda membuat aplikasi web dengan peran pengguna campuran—beberapa pengguna mengautentikasi melalui kredensial Windows mereka, sementara yang lain mengautentikasi dengan token JWT. Header harus selaras dengan strategi autentikasi yang berbeda ini untuk menghindari kebingungan dan permintaan keamanan yang tidak perlu.

Namun apa yang terjadi jika kedua skema autentikasi diterapkan secara menyeluruh, sehingga kedua header diiklankan secara bersamaan? Hal ini dapat membuat frustasi, terutama bila Anda ingin memiliki kontrol yang tepat atas bagaimana dan kapan setiap metode autentikasi diterapkan. Untungnya, ASP.NET Core menyediakan cara untuk mengatasi masalah ini, memberikan pengembang seperti Anda alat untuk menerapkan kontrol yang sangat ketat ini.

Pada bagian berikut, kita akan mempelajari cara mengonfigurasi skema autentikasi untuk rute tertentu, menghindari penerapan global kedua skema, dan mencegah pengiriman header `WWW-Authenticate` yang tidak diinginkan. Kami akan membahas contoh nyata dan mempelajari praktik terbaik untuk konfigurasi ini. Pada akhirnya, Anda akan memiliki pemahaman yang jelas tentang cara mengatasi masalah ini dan memastikan bahwa aplikasi Anda berperilaku persis seperti yang diharapkan—dengan aman dan presisi. 🔒

Memerintah Contoh penggunaan
HandleResponse() Metode ini digunakan untuk mencegah penanganan tantangan autentikasi secara default, sehingga Anda dapat mengontrol respons sepenuhnya. Ini berguna ketika Anda ingin menyesuaikan cara menanggapi permintaan yang tidak sah, seperti mengirim pesan atau kode status tertentu.
AddAuthenticationSchemes() Metode ini menentukan skema otentikasi mana yang harus diterapkan pada kebijakan tertentu. Dalam contoh ini, ini digunakan untuk mengaitkan Otentikasi Pembawa JWT atau Otentikasi Windows (Negosiasi) dengan rute atau kebijakan yang berbeda.
MapControllerRoute() Memetakan rute ke tindakan pengontrol di ASP.NET Core. Ini digunakan untuk mengatur pola perutean untuk kebijakan autentikasi yang berbeda, memastikan bahwa rute tertentu ditangani dengan metode autentikasi yang sesuai.
OnChallenge Ini adalah pengendali peristiwa di kelas JwtBearerEvents yang memungkinkan Anda menyesuaikan perilaku ketika tantangan autentikasi terjadi, seperti menyesuaikan respons 401 Tidak Sah.
UseMiddleware() Digunakan untuk mendaftarkan middleware khusus di saluran permintaan aplikasi. Hal ini memungkinkan Anda mencegat permintaan dan respons HTTP, seperti menyesuaikan header WWW-Authenticate berdasarkan rute yang diminta.
SetRequiredService() Dalam contoh middleware, metode ini digunakan untuk mengambil IAuthenticationService dari kontainer injeksi ketergantungan. Layanan ini bertanggung jawab untuk menangani tugas autentikasi, seperti memvalidasi token dan mengelola skema autentikasi.
UseEndpoints() Metode ini mengonfigurasi titik akhir untuk perutean di ASP.NET Core. Ini digunakan untuk menentukan bagaimana rute tertentu harus ditangani oleh pengontrol dan kebijakan mana yang harus diterapkan.
RequireAuthenticatedUser() Metode ini memastikan bahwa pengguna harus diautentikasi untuk mengakses rute yang dilindungi oleh kebijakan otorisasi. Ini digunakan dalam definisi kebijakan untuk menerapkan otentikasi pada rute yang memerlukannya.
SymmetricSecurityKey() Metode ini membuat kunci simetris yang digunakan untuk menandatangani dan memvalidasi token JWT. Penting untuk memastikan integritas dan keaslian token.

Ikhtisar Solusi: Mengonfigurasi Skema Otentikasi untuk Rute Tertentu

Dalam konteks ASP.NET Core, mengelola skema autentikasi bisa jadi rumit, terutama bila Anda memiliki beberapa skema seperti JWT Bearer Authentication dan Windows Authentication (Negotiate) yang berjalan secara paralel. Untuk mengatasi masalah konflik header WWW-Authenticate, kami menggunakan kombinasi konfigurasi middleware, otorisasi berbasis kebijakan, dan penanganan respons khusus. Solusi ini melibatkan pengaturan dua skema otentikasi berbeda yang diterapkan secara selektif pada rute berbeda. Idenya adalah untuk memastikan bahwa setiap rute merespons hanya dengan header autentikasi yang diperlukan—JWT untuk rute yang dilindungi JWT dan Negosiasi untuk rute yang dilindungi Autentikasi Windows. 🚀

Bagian penting pertama dari solusi ini adalah menyiapkan skema otentikasi. Di file `Program.cs`, kami mengonfigurasi Otentikasi JWT Bearer dan Otentikasi Windows. Untuk JWT, kami menyiapkan metode `AddJwtBearer` dengan konfigurasi yang diperlukan seperti `Issuer`, `Audience`, dan `IssuerSigningKey`. Yang penting di sini adalah event handler yang ditentukan di `OnChallenge`, yang memungkinkan kita menyembunyikan header WWW-Authenticate default. Hal ini memberi kami kendali atas cara penanganan respons 401 Tidak Sah. Kami juga memastikan bahwa responsnya disesuaikan dengan pesan JSON, yang menandakan bahwa pengguna tidak sah.

Selanjutnya, kami menambahkan skema Otentikasi Windows dengan `AddNegotiate()`. Ini mengatur protokol Negosiasi HTTP yang digunakan untuk mengautentikasi pengguna Windows. Kami mengikat kedua skema otentikasi ke kebijakan otorisasi yang terpisah. Kebijakan ini ditentukan dalam metode `AddAuthorization()` tempat kami menambahkan kebijakan khusus untuk setiap skema autentikasi. Misalnya, `JwtAuthPolicy` secara eksplisit menambahkan `JwtBearerDefaults.AuthenticationScheme`, dan demikian pula, `WinAuthPolicy` menambahkan `NegotiateDefaults.AuthenticationScheme`. Ini adalah kunci untuk merutekan otentikasi dengan benar berdasarkan mekanisme perlindungan rute. 💡

Setelah pengaturan, kita menggunakan atribut `[Authorize(Policy = "JwtAuthPolicy")]` dan `[Authorize(Policy = "WinAuthPolicy")]` untuk menghiasi rute. Hal ini memastikan bahwa setiap rute mengikuti mekanisme otentikasi yang ditentukan. Namun, kami masih menghadapi masalah yang menyebabkan kedua skema autentikasi dapat diterapkan secara global. Untuk mengatasi hal ini, kita perlu mengubah aliran middleware dan secara selektif menangani header WWW-Authenticate menggunakan metode `HandleResponse()` dalam acara `OnChallenge`. Hal ini memastikan bahwa ketika rute diamankan dengan JWT, header WWW-Authenticate: Bearer digunakan, dan untuk rute Autentikasi Windows, hanya header Negotiate yang dikirim.

Alur keseluruhannya efisien dan aman karena kami menggunakan praktik terbaik seperti validasi token dan penanganan kesalahan. Dengan menyiapkan kebijakan, skema autentikasi, dan menyesuaikan respons tantangan, kami memastikan bahwa header autentikasi terikat erat dengan rute yang relevan. Dengan pengaturan ini, pengembang dapat dengan percaya diri mengelola skema autentikasi yang berbeda dalam satu aplikasi ASP.NET Core tanpa menimbulkan konflik yang tidak perlu. Pendekatan ini meningkatkan pengalaman pengguna dengan hanya menyediakan header WWW-Authenticate yang relevan untuk setiap rute yang dilindungi. 🛠️

Pendekatan 1: Memodifikasi Otentikasi dengan Custom Middleware

Solusi ini menggunakan middleware khusus untuk membatasi JWT Bearer Authentication dan Windows Authentication (Negotiate) ke rute tertentu di backend ASP.NET Core. Middleware memastikan bahwa hanya header WWW-Authenticate yang sesuai yang disertakan berdasarkan persyaratan autentikasi rute.

public class AuthenticationSchemeMiddleware
{
    private readonly RequestDelegate _next;
    public AuthenticationSchemeMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task InvokeAsync(HttpContext context)
    {
        var path = context.Request.Path;
        var authentication = context.RequestServices.GetRequiredService<IAuthenticationService>();
        if (path.StartsWithSegments("/api/jwt"))
        {
            context.Request.Headers["Authorization"] = "Bearer <your-token>";
        }
        else if (path.StartsWithSegments("/api/windows"))
        {
            context.Request.Headers["Authorization"] = "Negotiate";
        }
        await _next(context);
    }
}

public static class AuthenticationSchemeMiddlewareExtensions
{
    public static IApplicationBuilder UseAuthenticationSchemeMiddleware(this IApplicationBuilder builder)
    {
        return builder.UseMiddleware<AuthenticationSchemeMiddleware>();
    }
}

public void Configure(IApplicationBuilder app)
{
    app.UseAuthenticationSchemeMiddleware();
    app.UseAuthentication();
    app.UseAuthorization();
}

Pendekatan 2: Otorisasi Berbasis Kebijakan dengan Kontrol Terperinci

Solusi ini menggunakan kebijakan otorisasi untuk mengonfigurasi skema autentikasi secara terpisah untuk rute berbeda di ASP.NET Core. Kebijakan ini memungkinkan Anda untuk menerapkan JWT Bearer Authentication atau Windows Authentication secara selektif berdasarkan rute.

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(options =>
    {
        options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
        options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
    })
    .AddJwtBearer(options =>
    {
        options.RequireHttpsMetadata = false;
        options.SaveToken = true;
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidateAudience = true,
            ValidateLifetime = true,
            ValidateIssuerSigningKey = true,
            ValidIssuer = builder.Configuration["Jwt:Issuer"],
            ValidAudience = builder.Configuration["Jwt:Issuer"],
            IssuerSigningKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(builder.Configuration["Jwt:Key"]))
        };
    })
    .AddNegotiate();

    services.AddAuthorization(options =>
    {
        options.AddPolicy("JwtAuthPolicy", policy =>
        {
            policy.AddAuthenticationSchemes(JwtBearerDefaults.AuthenticationScheme);
            policy.RequireAuthenticatedUser();
        });
        options.AddPolicy("WinAuthPolicy", policy =>
        {
            policy.AddAuthenticationSchemes(NegotiateDefaults.AuthenticationScheme);
            policy.RequireAuthenticatedUser();
        });
    });
}

public void Configure(IApplicationBuilder app)
{
    app.UseAuthentication();
    app.UseAuthorization();
    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
        endpoints.MapControllerRoute(
            name: "jwt",
            pattern: "api/jwt/{action}",
            defaults: new { controller = "Jwt" });
        endpoints.MapControllerRoute(
            name: "windows",
            pattern: "api/windows/{action}",
            defaults: new { controller = "Windows" });
    });
}

Pendekatan 3: Header Otentikasi WWW Bersyarat Berdasarkan Rute

Dalam pendekatan ini, ASP.NET Core dikonfigurasikan untuk hanya menyertakan header `WWW-Authenticate` yang sesuai berdasarkan rute dengan mencegat respons dan menyesuaikan header secara kondisional. Metode ini menggunakan middleware untuk fleksibilitas lebih dalam mengontrol header.

public class AuthenticationHeaderMiddleware
{
    private readonly RequestDelegate _next;
    public AuthenticationHeaderMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public async Task InvokeAsync(HttpContext context)
    {
        var path = context.Request.Path;
        await _next(context);
        if (path.StartsWithSegments("/api/jwt"))
        {
            context.Response.Headers["WWW-Authenticate"] = "Bearer";
        }
        else if (path.StartsWithSegments("/api/windows"))
        {
            context.Response.Headers["WWW-Authenticate"] = "Negotiate";
        }
    }
}

public static class AuthenticationHeaderMiddlewareExtensions
{
    public static IApplicationBuilder UseAuthenticationHeaderMiddleware(this IApplicationBuilder builder)
    {
        return builder.UseMiddleware<AuthenticationHeaderMiddleware>();
    }
}

public void Configure(IApplicationBuilder app)
{
    app.UseAuthenticationHeaderMiddleware();
    app.UseAuthentication();
    app.UseAuthorization();
}

Mengoptimalkan Otentikasi dengan JWT dan Otentikasi Windows di ASP.NET Core

Di ASP.NET Core, mengelola beberapa skema autentikasi, seperti JWT Bearer dan Windows Authentication (Negotiate), memerlukan konfigurasi yang cermat untuk memastikan bahwa skema yang benar diterapkan ke rute tertentu. Masalah umum yang dihadapi pengembang adalah penerapan default semua skema autentikasi yang dikonfigurasi secara global, yang dapat mengakibatkan penyertaan header WWW-Authenticate yang tidak diinginkan dalam respons HTTP. Hal ini terutama menjadi masalah ketika Anda ingin Rute JWT hanya menyertakan header Bearer dan Rute Autentikasi Windows hanya menyertakan header Negosiasi. Dengan menyesuaikan konfigurasi autentikasi dan menggunakan kebijakan, Anda dapat mengontrol skema autentikasi mana yang diterapkan ke setiap rute dan mencegah konflik di header respons. 🔐

Salah satu alat paling canggih yang Anda inginkan adalah sistem otorisasi berbasis kebijakan di ASP.NET Core. Dengan menentukan kebijakan spesifik untuk setiap skema autentikasi, Anda dapat memastikan bahwa setiap rute dilindungi oleh mekanisme yang benar. Misalnya, rute yang memerlukan autentikasi JWT Bearer akan menggunakan `JwtAuthPolicy`, yang mengharuskan hanya skema Bearer yang digunakan, sedangkan rute yang memerlukan autentikasi Windows akan diamankan dengan `WinAuthPolicy`. Pendekatan ini membuat aplikasi lebih fleksibel, karena memungkinkan Anda menyesuaikan kebijakan keamanan untuk rute berbeda dalam aplikasi yang sama. Untuk menyempurnakan header WWW-Authenticate, Anda juga dapat menyesuaikan peristiwa `OnChallenge` dalam konfigurasi JWT untuk menyembunyikan header default dan memastikan bahwa hanya header relevan yang disertakan dalam respons.

Selain menyiapkan skema dan kebijakan autentikasi ini, penting untuk memahami bagaimana fungsi middleware dalam proses ini. Middleware `UseAuthentication` dan `UseAuthorization` harus ditempatkan secara hati-hati di dalam pipeline untuk memastikan bahwa skema autentikasi yang benar diproses sebelum setiap permintaan mencapai rutenya. Dengan mendefinisikan middleware ini dan menyusunnya dengan urutan yang tepat, Anda dapat menghindari konflik antar skema. Pendekatan ini tidak hanya meningkatkan keamanan aplikasi Anda tetapi juga mengoptimalkan pengalaman pengguna dengan memastikan bahwa hanya skema autentikasi yang diperlukan yang diterapkan pada setiap permintaan. 🌐

Pertanyaan Umum tentang JWT dan Otentikasi Windows di ASP.NET Core

  1. Apa tujuan dari metode `AddJwtBearer` di ASP.NET Core?
  2. Itu AddJwtBearer metode ini digunakan untuk mengonfigurasi otentikasi JWT Bearer di ASP.NET Core. Ini memungkinkan Anda menentukan bagaimana token JWT divalidasi, termasuk mengatur parameter seperti penerbit token, audiens, dan kunci penandatanganan. Hal ini penting untuk mengamankan API dengan token JWT, memastikan bahwa hanya pengguna terautentikasi yang dapat mengakses sumber daya yang dilindungi.
  3. Bagaimana saya bisa menyembunyikan header Otentikasi WWW default di JWT?
  4. Dengan menangani OnChallenge acara dalam konfigurasi JWT Bearer, Anda dapat menyembunyikan header WWW-Authenticate default. Anda melakukan ini dengan menelepon context.HandleResponse(), yang mencegah perilaku default, dan kemudian secara manual mengatur respons khusus, seperti mengirim kode status 401 dengan pesan kesalahan JSON.
  5. Apa yang dilakukan metode `AddNegotiate()` dalam konteks autentikasi ASP.NET Core?
  6. Itu AddNegotiate() metode mengkonfigurasi Otentikasi Windows menggunakan protokol Negosiasi. Hal ini memungkinkan aplikasi untuk mengautentikasi pengguna berdasarkan kredensial Windows, biasanya untuk lingkungan perusahaan di mana pengguna sudah masuk ke domain Windows.
  7. Bagaimana cara menerapkan beberapa skema otentikasi ke rute yang berbeda?
  8. Anda dapat menggunakan otorisasi berbasis kebijakan untuk menerapkan skema autentikasi tertentu ke rute yang berbeda. Misalnya, Anda dapat mendefinisikan a JwtAuthPolicy untuk rute yang dilindungi JWT dan a WinAuthPolicy untuk rute yang dilindungi Autentikasi Windows. Kemudian, dengan menggunakan [Authorize(Policy = "PolicyName")] atribut, Anda dapat mengikat setiap rute ke skema otentikasi masing-masing.
  9. Mengapa penting untuk menyesuaikan header `WWW-Authenticate`?
  10. Menyesuaikan WWW-Authenticate header memastikan bahwa hanya metode otentikasi yang relevan yang diiklankan ke klien. Misalnya, Anda tidak ingin rute JWT menyarankan metode Negosiasi, yang dapat membingungkan klien atau menyebabkan permintaan autentikasi yang tidak diperlukan. Penyesuaian ini membantu mengoptimalkan keamanan dan meningkatkan pengalaman pengguna dengan menyediakan alur autentikasi yang lebih jelas.
  11. Bagaimana otorisasi berbasis kebijakan membantu dalam mengelola beberapa skema autentikasi?
  12. Otorisasi berbasis kebijakan memungkinkan Anda menentukan kebijakan otorisasi khusus untuk rute berbeda, masing-masing dengan skema autentikasi tertentu. Hal ini membuat kode Anda lebih fleksibel dan mudah dikelola dengan memisahkan kekhawatiran dan memastikan bahwa tindakan keamanan yang tepat diterapkan pada setiap rute. Anda dapat menentukan skema dan persyaratan berbeda untuk setiap rute, memastikan bahwa mekanisme yang benar diterapkan pada sumber daya yang sesuai.
  13. Bisakah acara `OnChallenge` dalam konfigurasi JWT digunakan untuk skema otentikasi lainnya?
  14. Ya, itu OnChallenge acara juga dapat digunakan untuk menyesuaikan respons terhadap tantangan autentikasi di skema lain. Misalnya, Anda dapat menggunakannya untuk mengkustomisasi perilaku skema autentikasi Negosiasi dengan menyembunyikan header default atau mengubah pesan kesalahan yang dikembalikan ke klien. Peristiwa ini menawarkan cara yang ampuh untuk mengendalikan tantangan autentikasi.
  15. Apa peran middleware `UseAuthentication` di ASP.NET Core?
  16. Itu UseAuthentication middleware digunakan untuk mengaktifkan otentikasi dalam aplikasi ASP.NET Core. Ini memastikan bahwa permintaan masuk diperiksa untuk token atau kredensial autentikasi yang valid. Middleware ini harus ditambahkan sebelum UseAuthorization middleware untuk mengautentikasi pengguna dengan benar sebelum melakukan pemeriksaan otorisasi apa pun.
  17. Bagaimana cara mengonfigurasi otentikasi dan otorisasi untuk API di ASP.NET Core?
  18. Untuk mengonfigurasi autentikasi dan otorisasi API, Anda perlu menggunakan AddAuthentication Dan AddAuthorization metode dalam file `Program.cs`. Metode ini mengatur skema otentikasi (seperti JWT dan Negosiasi) dan menentukan kebijakan yang menentukan rute mana yang harus dilindungi oleh skema otentikasi mana. Kemudian, gunakan [Authorize] atribut untuk mengamankan rute Anda.
  19. Apa manfaat menggunakan Otentikasi Pembawa JWT di API web?
  20. Otentikasi Pembawa JWT adalah metode otentikasi tanpa kewarganegaraan yang menyediakan cara yang terukur dan aman untuk mengautentikasi pengguna tanpa mempertahankan status sesi di server. Hal ini sangat berguna untuk API karena memungkinkan pengguna untuk mengautentikasi dengan token, yang dapat dengan mudah diteruskan dalam permintaan HTTP, sehingga ideal untuk aplikasi web modern dan klien seluler.

Saat membangun aplikasi ASP.NET Core dengan keduanya Otentikasi Pembawa JWT Dan Otentikasi Windows, mengelola skema autentikasi ini dapat menjadi suatu tantangan. Tujuannya adalah untuk membatasi WWW-Otentikasi header untuk hanya menampilkan skema yang relevan berdasarkan rute. Dengan menentukan kebijakan otorisasi khusus dan menangani Pada Tantangan acara, pengembang dapat mengontrol header respons secara efektif dan memastikan bahwa setiap skema otentikasi diterapkan hanya jika diperlukan. Pendekatan ini meningkatkan keamanan dan pengalaman pengguna, khususnya dalam skenario yang memerlukan beberapa mekanisme autentikasi.

Memastikan Header Otentikasi yang Benar untuk Rute Tertentu

Dalam aplikasi ASP.NET Core modern, mengontrol skema autentikasi seperti JWT dan Otentikasi Windows untuk rute yang berbeda dapat menghasilkan implementasi yang lebih bersih dan aman. Tantangan utama di sini adalah memastikan bahwa WWW-Otentikasi header hanya mengiklankan metode otentikasi yang sesuai untuk setiap rute. Dengan mengonfigurasi skema autentikasi dengan benar dan menyesuaikan header respons untuk setiap rute, Anda dapat menghilangkan konflik dan meningkatkan keamanan aplikasi Anda. 🌐

Dalam kasus Anda, solusinya melibatkan penggunaan kebijakan otorisasi khusus untuk JWT dan Otentikasi Windows. Dengan bantuan kebijakan ini, Anda dapat mengontrol skema autentikasi mana yang harus digunakan per rute. Dengan menekan default WWW-Otentikasi tajuk melalui Pada Tantangan acara dalam konfigurasi JWT Anda, Anda dapat menyesuaikan respons untuk hanya menampilkan header Bearer untuk rute JWT dan header Negosiasi untuk rute Autentikasi Windows. Pendekatan ini memastikan bahwa hanya header relevan yang dikirim sebagai respons, sehingga menyederhanakan proses autentikasi dan meningkatkan pengalaman pengguna. 🔒

Dengan menggunakan teknik ini, Anda dapat mencapai alur autentikasi yang lebih bersih bagi pengguna Anda dan menghindari permintaan autentikasi yang tidak perlu. Selain itu, ini memberikan kontrol yang lebih baik terhadap postur keamanan aplikasi Anda. Ini adalah contoh yang bagus tentang bagaimana menyempurnakan autentikasi di ASP.NET Core memungkinkan aplikasi web yang lebih disesuaikan, kuat, dan aman. 💻

Sumber dan Referensi
  1. Untuk mempelajari lebih dalam tentang mengonfigurasi autentikasi di ASP.NET Core, lihat dokumentasi resmi Microsoft di Otentikasi Inti ASP.NET .
  2. Untuk panduan tentang cara menggunakan autentikasi JWT Bearer dan menangani berbagai skema, lihat panduan komprehensif ini Otentikasi Pembawa JWT di ASP.NET Core .
  3. Untuk detail selengkapnya tentang Otentikasi Windows dan skema Negosiasi, lihat dokumentasi di Otentikasi Windows di ASP.NET Core .