Overview
Casbin ialah perpustakaan kawalan akses sumber terbuka yang berkuasa dan cekap yang menyokong pelbagai
Menguatkuasakan satu set peraturan adalah mudah seperti menyenaraikan subjek, objek, dan tindakan yang dibenarkan yang diingini (atau dalam format lain mengikut keperluan anda) dalam fail polisi. Ini adalah sinonim di semua aliran di mana Casbin digunakan. Pembangun/pentadbir mempunyai kawalan penuh ke atas susun atur, pelaksanaan, dan syarat untuk kebenaran, yang ditetapkan melalui fail model. Casbin menyediakan Enforcer untuk mengesahkan permintaan masuk berdasarkan fail polisi dan model yang diberikan kepada Enforcer.
Bahasa yang Disokong oleh Casbin
Casbin menyediakan sokongan untuk pelbagai bahasa pengaturcaraan, bersedia untuk diintegrasikan dalam mana-mana projek dan aliran kerja:
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 untuk Pengeluaran |
Set Ciri untuk Bahasa yang Berbeza
Kami sentiasa bekerja keras untuk memastikan Casbin mempunyai set ciri yang sama untuk semua bahasa. Namun, realitinya tidaklah begitu indah.
Ciri | 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 | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
Nota - ✅ untuk Watcher atau Role Manager hanya bermakna mempunyai antara muka dalam pustaka teras. Ia tidak menunjukkan sama ada terdapat pelaksanaan watcher atau role manager yang tersedia.
Apakah Casbin?
Casbin ialah pustaka keizinan yang boleh digunakan dalam aliran kerja di mana kita mahu suatu objek
atau entiti diakses oleh pengguna tertentu atau subjek
. Jenis akses, iaitu tindakan
, Inilah cara Casbin digunakan secara meluas, dan ia disebut sebagai "standard"
Casbin mampu menangani banyak senario pengkalan kuasa yang kompleks selain daripada aliran standard. Terdapat penambahan peranan (RBAC), atribut (ABAC), dsb.
Apa yang Casbin Lakukan
- Menguatkuasakan dasar dalam bentuk klasik
{ subjek, objek, tindakan }
atau bentuk tersuai seperti yang anda tetapkan. Kedua-dua kebenaran dan penolakan pengkalan kuasa disokong. - Mengendalikan penyimpanan model kawalan akses dan dasarnya.
- Menguruskan pemetaan pengguna-peranan dan pemetaan peranan-peranan (juga dikenali sebagai hierarki peranan dalam RBAC).
- Menyokong pengguna sulit dalam yang diperbuat seperti
root
atauadministrator
. Seorang pengguna super boleh melakukan apa sahaja tanpa kebenaran eksplisit. - Sediakan berbilang operator terbina dalam untuk menyokong pencocokan peraturan. Contohnya,
keyMatch
boleh memetakan kunci sumber/foo/bar
kepada corak/foo*
.
Apa yang Casbin TIDAK Lakukan
- Pengesahan (iaitu mengesahkan
nama pengguna
dankata laluan
apabila pengguna log masuk) - Mengurus senarai pengguna atau peranan.
Lebih mudah untuk projek mengurus senarai pengguna, peranan, atau kata laluan mereka. Pengguna biasanya mempunyai kata laluan mereka, dan Casbin tidak direka sebagai bekas kata laluan. Walau bagaimanapun, Casbin menyimpan pemetaan peranan pengguna untuk senario RBAC.