Disponsori oleh
Bangun autentikasi dengan pencegahan penipuan, lebih cepat.
Coba Stytch untuk autentikasi yang mengutamakan API, manajemen pengguna & organisasi, SSO multi-penyewa, MFA, sidik jari perangkat, dan banyak lagi.
? Mencari solusi manajemen identitas dan akses sumber terbuka seperti Okta, Auth0, Keycloak? Pelajari lebih lanjut tentang: Casdoor
Berita : masih khawatir tentang cara menulis kebijakan jCasbin yang benar? Casbin online editor
datang untuk membantu! Cobalah di: https://casbin.org/editor/
jCasbin adalah pustaka kontrol akses sumber terbuka yang kuat dan efisien untuk proyek Java. Ini memberikan dukungan untuk menegakkan otorisasi berdasarkan berbagai model kontrol akses.
Kasbin | jCasbin | simpul-Casbin | PHP-Kasbin |
siap produksi | siap produksi | siap produksi | siap produksi |
PyCasbin | Kasbin.NET | Casbin-CPP | Kasbin-RS |
siap produksi | siap produksi | uji beta | siap produksi |
write-article
, read-log
. Itu tidak mengontrol akses ke artikel atau log tertentu.resource.Owner
dapat digunakan untuk mendapatkan atribut suatu sumber daya./res/*
, /res/:id
dan metode HTTP seperti GET
, POST
, PUT
, DELETE
.Di jCasbin, model kontrol akses disarikan ke dalam file CONF berdasarkan metamodel PERM (Kebijakan, Efek, Permintaan, Pencocokan) . Jadi mengalihkan atau meningkatkan mekanisme otorisasi suatu proyek semudah memodifikasi konfigurasi. Anda dapat menyesuaikan model kontrol akses Anda sendiri dengan menggabungkan model yang tersedia. Misalnya, Anda bisa menggabungkan peran RBAC dan atribut ABAC dalam satu model dan berbagi satu set aturan kebijakan.
Model paling dasar dan paling sederhana di jCasbin adalah ACL. CONF model ACL adalah:
# Request definition
[request_definition]
r = sub, obj, act
# Policy definition
[policy_definition]
p = sub, obj, act
# Policy effect
[policy_effect]
e = some(where ( p.eft == allow))
# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
Contoh kebijakan untuk model ACL adalah seperti:
p, alice, data1, read
p, bob, data2, write
Artinya:
Apa yang dilakukan jCasbin:
{subject, object, action}
klasik atau formulir yang disesuaikan seperti yang Anda tetapkan, otorisasi mengizinkan dan menolak didukung.root
atau administrator
. Pengguna super dapat melakukan apa saja tanpa izin eksplisit.keyMatch
dapat memetakan kunci sumber daya /foo/bar
ke pola /foo*
.Apa yang JCasbin TIDAK lakukan:
username
dan password
saat pengguna login)Untuk Maven:
<dependency>
<groupId>org.casbin</groupId>
<artifactId>jcasbin</artifactId>
<version>1.x.y (replace with latest version)</version>
</dependency>
https://casbin.org/docs/overview
Anda juga dapat menggunakan editor online (https://casbin.org/editor/) untuk menulis model dan kebijakan jCasbin di browser web Anda. Ini menyediakan fungsionalitas seperti syntax highlighting
dan code completion
, seperti IDE untuk bahasa pemrograman.
https://casbin.org/docs/tutorials
Penegak jCasbin baru dengan file model dan file kebijakan:
Enforcer enforcer = new Enforcer ( "path/to/model.conf" , "path/to/policy.csv" );
Catatan: Anda juga dapat menginisialisasi penegak dengan kebijakan di DB alih-alih file, lihat bagian Persistensi kebijakan untuk detailnya.
Tambahkan kait penegakan ke dalam kode Anda tepat sebelum akses terjadi:
String sub = "alice" ; // the user that wants to access a resource.
String obj = "data1" ; // the resource that is going to be accessed.
String act = "read" ; // the operation that the user performs on the resource.
if ( enforcer . enforce ( sub , obj , act ) == true ) {
// permit alice to read data1
} else {
// deny the request, show an error
}
Selain file kebijakan statis, jCasbin juga menyediakan API untuk manajemen izin saat run-time. Misalnya, Anda bisa mendapatkan semua peran yang ditetapkan kepada pengguna seperti di bawah ini:
Roles roles = enforcer . getRoles ( "alice" );
Lihat API manajemen kebijakan untuk penggunaan lebih lanjut.
jCasbin menyediakan dua set API untuk mengelola izin:
Kami juga menyediakan UI berbasis web untuk manajemen model dan manajemen kebijakan:
https://casbin.org/docs/adapters
https://casbin.org/docs/role-managers
Model | Berkas model | File kebijakan |
---|---|---|
ACL | basic_model.conf | basic_policy.csv |
ACL dengan pengguna super | basic_model_with_root.conf | basic_policy.csv |
ACL tanpa pengguna | basic_model_without_users.conf | kebijakan_dasar_tanpa_pengguna.csv |
ACL tanpa sumber daya | basic_model_without_resources.conf | basic_policy_without_resources.csv |
RBAC | rbac_model.conf | rbac_policy.csv |
RBAC dengan peran sumber daya | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
RBAC dengan domain/penyewa | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
ABAC | abac_model.conf | T/A |
Tenang | keymatch_model.conf | keymatch_policy.csv |
Tolak-timpa | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
Prioritas | prioritas_model.conf | prioritas_kebijakan.csv |
Middleware Authz untuk kerangka web: https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
Kami menyediakan dukungan Spring Boot, Anda dapat menggunakan casbin-spring-boot-starter untuk mengembangkan dengan cepat di SpringBoot
Di casbin-spring-boot-starter, kami melakukan penyesuaian berikut:
https://github.com/jcasbin/casbin-spring-boot-starter
Proyek ini ada berkat semua orang yang berkontribusi.
Terima kasih kepada semua pendukung kami! [Menjadi pendukung]
Dukung proyek ini dengan menjadi sponsor. Logo Anda akan muncul di sini dengan tautan ke situs web Anda. [Menjadi sponsor]
Proyek ini dilisensikan di bawah lisensi Apache 2.0.
Jika Anda memiliki masalah atau permintaan fitur, silakan hubungi kami. PR disambut baik.