0Pricing
C# Academy · Pelajaran

Otorisasi Berbasis Klaim

Berikan otorisasi berdasarkan klaim pengguna.

Otorisasi Berbasis Klaim adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C# Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C# Academy mencakup 4 pelajaran total.

Di Luar Peran

Peran adalah kasus khusus dari klaim. Otorisasi berbasis klaim memeriksa klaim apa pun — email, departemen, tingkat langganan, penanda izin — bukan hanya peran.

Dengan demikian, Anda mendapatkan kontrol yang lebih terperinci tanpa menciptakan puluhan peran.

// Claims a user might carry:
// department = sales
// subscription = pro
// email_verified = true

Menambahkan Klaim ke Token

Terbitkan klaim apa pun yang akan diperiksa oleh aturan otorisasi Anda. Klaim adalah pasangan tipe/nilai.

var claims = new List<Claim>
{
    new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
    new Claim("department", "sales"),
    new Claim("subscription", "pro"),
    new Claim("email_verified", "true")
};

Mendefinisikan Kebijakan Klaim

Aturan berbasis klaim dinyatakan sebagai kebijakan bernama yang didaftarkan dengan AddAuthorization. RequireClaim mengharuskan pengguna memiliki klaim tertentu.

builder.Services.AddAuthorization(options =>
{
    options.AddPolicy("VerifiedEmail", policy =>
        policy.RequireClaim("email_verified", "true"));
});

RequireClaim Tanpa Nilai

Jika Anda hanya peduli bahwa klaim tersebut ada (nilai apa pun), panggil RequireClaim hanya dengan tipenya.

options.AddPolicy("HasDepartment", policy =>
    policy.RequireClaim("department"));

RequireClaim dengan Nilai yang Diizinkan

Anda dapat mencantumkan nilai yang diizinkan; kebijakan berhasil jika klaim cocok dengan salah satu nilai tersebut.

options.AddPolicy("PaidTier", policy =>
    policy.RequireClaim("subscription", "pro", "enterprise"));

Menerapkan Kebijakan Klaim

Referensikan kebijakan berdasarkan namanya di dalam [Authorize].

[Authorize(Policy = "PaidTier")]
[HttpGet("premium-reports")]
public IActionResult Reports() => Ok();

Penggunaan API Minimal

API Minimal mereferensikan nama kebijakan yang sama melalui RequireAuthorization.

app.MapGet("/premium-reports", () => Results.Ok())
   .RequireAuthorization("PaidTier");

Menggabungkan Beberapa Persyaratan Klaim

Sebuah kebijakan dapat merangkai beberapa pemanggilan RequireClaim; semuanya harus terpenuhi (AND).

options.AddPolicy("VerifiedSales", policy =>
    policy
        .RequireClaim("email_verified", "true")
        .RequireClaim("department", "sales"));

RequireAssertion untuk Logika Khusus

Jika pemeriksaan nilai tetap tidak cukup, RequireAssertion menjalankan predikat sembarang atas ClaimsPrincipal.

options.AddPolicy("AdultUser", policy =>
    policy.RequireAssertion(ctx =>
    {
        var dob = ctx.User.FindFirst("birthdate")?.Value;
        return DateTime.TryParse(dob, out var d) &&
               d <= DateTime.UtcNow.AddYears(-18);
    }));

Membaca Klaim Saat Berjalan

Di dalam suatu aksi, Anda tetap dapat memeriksa klaim secara langsung ketika memerlukan nilainya, bukan sekadar gerbang ya/tidak.

var dept = User.FindFirst("department")?.Value;
var isPro = User.HasClaim("subscription", "pro");

Klaim vs Peran — Kapan Menggunakan Masing-Masing

Gunakan peran untuk fungsi pekerjaan yang luas. Gunakan klaim untuk atribut dan penanda fitur. Keduanya dapat dikombinasikan — sebuah kebijakan dapat mewajibkan satu peran dan beberapa klaim sekaligus.

options.AddPolicy("SalesManager", policy =>
    policy.RequireRole("manager")
          .RequireClaim("department", "sales"));

Pemeriksaan Singkat

Pastikan pemahaman Anda tentang kebijakan klaim.

Ringkasan

Anda telah mempelajari otorisasi berbasis klaim:

  • Klaim apa pun — bukan hanya peran — dapat menjadi syarat akses.
  • RequireClaim memeriksa keberadaan atau nilai tertentu yang diizinkan.
  • RequireAssertion menangani logika predikat khusus.
  • Klaim dan peran dapat dikombinasikan di dalam satu kebijakan bernama.

Berikutnya: model berbasis kebijakan secara menyeluruh.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Otorisasi Berbasis Klaim” gratis?

Ya — teks lengkap “Otorisasi Berbasis Klaim” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C# Academy, upgrade ke CoddyKit PRO. Kursus C# Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Otorisasi Berbasis Klaim”?

Berikan otorisasi berdasarkan klaim pengguna. Kamu berlatih C# Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C# Academy?

Tidak diperlukan pengalaman sebelumnya. C# Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Otorisasi Berbasis Klaim” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C# Academy ini?

Ya. Setiap pelajaran C# Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Otorisasi Berbasis Peran
  2. Otorisasi Berbasis Klaim
  3. Otorisasi Berbasis Kebijakan
  4. Requirement Otorisasi Kustom
← Kembali ke C# Academy