Overview
Casbin adalah pustaka kontrol akses sumber terbuka yang kuat dan efisien yang mendukung berbagai
Menegakkan seperangkat aturan sederhana seperti mencantumkan subjek, objek, dan tindakan yang diizinkan yang diinginkan (atau format lain sesuai kebutuhan Anda) dalam file kebijakan. Ini setara di semua alur di mana Casbin digunakan. Pengembang/administrator memiliki kontrol penuh atas tata letak, eksekusi, dan kondisi untuk otorisasi, yang ditetapkan melalui file model. Casbin menyediakan Enforcer untuk memvalidasi permintaan masuk berdasarkan file kebijakan dan model yang diberikan kepada Enforcer.
Bahasa yang Didukung oleh Casbin
Casbin menyediakan dukungan untuk berbagai bahasa pemrograman, siap untuk diintegrasikan dalam proyek dan alur kerja apa pun:
Casbin | jCasbin | node-Casbin | PHP-Casbin |
Siap untuk produksi | Siap untuk produksi | Siap untuk produksi | Siap untuk produksi |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
Siap untuk produksi | Siap untuk produksi | Siap untuk produksi | Siap produksi |
Kumpulan Fitur untuk Berbagai Bahasa
Kami selalu bekerja keras untuk membuat Casbin memiliki kumpulan fitur yang sama untuk semua bahasa. Namun, realitas tidaklah semenarik itu.
Fitur | Go | Java | Node.js | PHP | Python | C# | Delphi | Rust | C++ | Lua | Dart | Elixir |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Enforcement | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ABAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Scaling ABAC (eval() ) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
Management API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Batch API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Filtered Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Watcher | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Role Manager | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
Multi-Threading | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
'in' of matcher | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
Catatan - ✅ untuk Watcher atau Role Manager hanya berarti memiliki antarmuka di pustaka inti. Ini tidak menunjukkan apakah ada implementasi watcher atau role manager yang tersedia.
Apa itu Casbin?
Casbin adalah pustaka otorisasi yang dapat digunakan dalam alur di mana kita ingin suatu objek
atau entitas diakses oleh pengguna tertentu atau subjek
. Jenis akses, yaitu action
, Ini adalah cara penggunaan Casbin yang paling luas, dan disebut "standar"
Casbin mampu menangani banyak skenario otorisasi yang kompleks selain alur standar. Bisa ada penambahan peran (RBAC), atribut (ABAC), dll.
Apa yang Dilakukan Casbin
- Menegakkan kebijakan dalam bentuk klasik
{ subject, object, action }
atau bentuk kustom sesuai yang Anda definisikan. Kedua otorisasi izin dan tolak didukung. - Menangani penyimpanan model kontrol akses dan kebijakannya.
- Mengelola pemetaan pengguna-peran dan pemetaan peran-peran (alias hierarki peran dalam RBAC).
- Mendukung pengguna super seperti
root
atauadministrator
. Seorang superuser dapat melakukan apapun tanpa izin eksplisit. - Sediakan beberapa operator bawaan untuk mendukung pencocokan aturan. Misalnya,
keyMatch
dapat memetakan kunci sumber daya/foo/bar
ke pola/foo*
.
Apa yang Casbin TIDAK Lakukan
- Autentikasi (alias memverifikasi
username
danpassword
ketika pengguna masuk) - Mengelola daftar pengguna atau peran.
Lebih mudah bagi proyek untuk mengelola daftar pengguna, peran, atau kata sandi mereka. Pengguna biasanya memiliki kata sandi mereka, dan Casbin tidak dirancang sebagai wadah kata sandi. Namun, Casbin menyimpan pemetaan pengguna-peran untuk skenario RBAC.