0Pricing
C# Academy · Pelajaran

Otorisasi Berbasis Peran

Batasi endpoint berdasarkan peran pengguna.

Otorisasi Berbasis Peran adalah pelajaran C# Academy gratis di CoddyKit. Ini adalah pelajaran 1 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.

Autentikasi versus Otorisasi

Autentikasi menjawab "siapa Anda?". Otorisasi menjawab "apa yang boleh Anda lakukan?".

Model otorisasi paling sederhana di ASP.NET Core berbasis peran: pengguna memiliki peran, dan titik akhir mewajibkan peran tertentu.

// User has roles: admin, editor
// Endpoint requires: admin

Asal Peran

Peran hanyalah klaim dengan tipe ClaimTypes.Role. Saat menerbitkan JWT, tambahkan satu klaim peran untuk setiap peran yang dimiliki pengguna.

var claims = new List<Claim>
{
    new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
    new Claim(ClaimTypes.Role, "admin"),
    new Claim(ClaimTypes.Role, "editor")
};

Tipe Klaim Peran

Agar [Authorize(Roles=...)] dan User.IsInRole berfungsi, handler harus mengetahui tipe klaim yang merepresentasikan peran.

Kunci JWT role secara bawaan dipetakan ke ClaimTypes.Role. Jika Anda menggunakan kunci khusus, beri tahu validator melalui RoleClaimType.

options.TokenValidationParameters = new TokenValidationParameters
{
    RoleClaimType = ClaimTypes.Role
};

Mewajibkan Satu Peran

Terapkan [Authorize(Roles = "admin")] pada pengendali atau tindakan. Hanya pengguna dengan peran admin yang boleh masuk.

[Authorize(Roles = "admin")]
[HttpDelete("users/{id}")]
public IActionResult DeleteUser(int id)
{
    // only admins reach here
    return NoContent();
}

Mewajibkan Salah Satu dari Beberapa Peran

Daftar yang dipisahkan koma berarti OR: pengguna memerlukan setidaknya satu dari peran yang tercantum.

[Authorize(Roles = "admin,editor")]
[HttpPut("articles/{id}")]
public IActionResult Update(int id) => Ok();
// admins OR editors are allowed

Mewajibkan Beberapa Peran (AND)

Untuk mewajibkan semua dari beberapa peran, susun beberapa atribut [Authorize]. Masing-masing harus berhasil.

[Authorize(Roles = "employee")]
[Authorize(Roles = "manager")]
public IActionResult ApproveBudget() => Ok();
// must be BOTH employee AND manager

Memeriksa Peran dalam Kode

Terkadang Anda memerlukan pemeriksaan peran di dalam isi metode, bukan hanya di gerbang masuk. Gunakan User.IsInRole.

public IActionResult GetReport()
{
    var data = BuildReport();
    if (User.IsInRole("admin"))
        data.IncludeSensitiveColumns();
    return Ok(data);
}

Padanan API Minimal

API Minimal menggunakan .RequireAuthorization dengan kebijakan sebaris atau, lebih sederhananya, Anda dapat mewajibkan peran melalui kebijakan bernama.

app.MapDelete("/users/{id}", (int id) => Results.NoContent())
   .RequireAuthorization(p => p.RequireRole("admin"));

Peran dalam Hierarki

ASP.NET Core tidak memiliki hierarki peran bawaan. Jika admin secara implisit harus memiliki hak penyunting, berikan kedua klaim peran saat pengguna masuk atau modelkan hal itu dengan kebijakan (kursus berikutnya).

// Grant both at login if admin >= editor
new Claim(ClaimTypes.Role, "admin");
new Claim(ClaimTypes.Role, "editor");

Saat Peran Tidak Memadai

Peran bersifat umum. Ketika aturan bergantung pada data (misalnya, "hanya pemilik yang dapat mengedit") atau izin terperinci, pemeriksaan peran menjadi rumit.

Di sinilah otorisasi berbasis klaim dan berbasis kebijakan berperan.

// Hard to express with roles alone:
// "editors, but only for their own department"

Mengembalikan 403 vs 401

Jika pengguna tidak terautentikasi, pemeriksaan peran menghasilkan 401 Unauthorized. Jika pengguna terautentikasi tetapi tidak memiliki peran tersebut, mereka mendapatkan 403 Forbidden.

// No/invalid token         -> 401 Unauthorized
// Valid token, wrong role   -> 403 Forbidden

Pemeriksaan Singkat

Uji pengetahuan Anda tentang peran.

Ringkasan

Anda telah mempelajari otorisasi berbasis peran:

  • Peran adalah klaim ClaimTypes.Role yang ditempatkan di dalam token.
  • [Authorize(Roles = "a,b")] berarti OR; menumpuk atribut berarti AND.
  • User.IsInRole memeriksa peran dalam kode.
  • Peran bersifat umum — aturan berbasis data memerlukan model yang lebih kaya.

Berikutnya: otorisasi berbasis klaim.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Otorisasi Berbasis Peran” gratis?

Ya — teks lengkap “Otorisasi Berbasis Peran” 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 Peran”?

Batasi endpoint berdasarkan peran 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 1 dari 4.

Berapa lama pelajaran “Otorisasi Berbasis Peran” 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