Overview
Casbin è una libreria open-source potente ed efficiente per il controllo degli accessi che supporta vari
Applicare un insieme di regole è semplice come elencare soggetti, oggetti e l'azione desiderata consentita (o qualsiasi altro formato in base alle tue esigenze) in un file policy. Questo è sinonimo in tutti i flussi in cui Casbin viene utilizzato. Lo sviluppatore/amministratore ha il controllo completo sul layout, l'esecuzione e le condizioni per l'autorizzazione, che sono impostate tramite il file model. Casbin fornisce un Enforcer per convalidare una richiesta in arrivo in base ai file policy e model dati all'Enforcer.
Linguaggi Supportati da Casbin
Casbin offre supporto per vari linguaggi di programmazione, pronti per essere integrati in qualsiasi progetto e flusso di lavoro:
Casbin | jCasbin | node-Casbin | PHP-Casbin |
Pronto per la produzione | Pronto per la produzione | Pronto per la produzione | Pronto per la produzione |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
Pronto per la produzione | Pronto per la produzione | Pronto per la produzione | Pronto per la produzione |
Set di funzionalità per diverse lingue
Lavoriamo sempre al meglio per garantire a Casbin lo stesso set di funzionalità per tutte le lingue. Tuttavia, la realtà non è così bella.
Funzionalità | 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 - ✅ per Watcher o Role Manager significa solo avere l'interfaccia nella libreria principale. Non indica se è disponibile un'implementazione di watcher o role manager.
Cos'è Casbin?
Casbin è una libreria di autorizzazione che può essere utilizzata nei flussi in cui vogliamo che un certo oggetto
o entità sia accessibile da un utente specifico o soggetto
. Il tipo di accesso, ovvero azione
, Questo è il modo in cui Casbin è più ampiamente utilizzato e viene chiamato il "standard"
Casbin è in grado di gestire molti scenari di autorizzazione complessi oltre al flusso standard. Possono essere aggiunti ruoli (RBAC), attributi (ABAC), ecc.
Cosa Fa Casbin
- Applicare la politica nella forma classica
{ soggetto, oggetto, azione }
o in una forma personalizzata come hai definito. Sono supportate sia le autorizzazioni di permesso che di negazione. - Gestire la memorizzazione del modello di controllo dell'accesso e della sua politica.
- Gestire i mapping ruolo-utente e i mapping ruolo-ruolo (alias gerarchia dei ruoli in RBAC).
- Supportare utenti super speciali integrati come
root
oamministratore
. Un superutente può fare qualsiasi cosa senza permessi espliciti. - Fornire più operatori integrati per supportare la corrispondenza delle regole. Ad esempio,
keyMatch
può mappare una chiave di risorsa/foo/bar
al pattern/foo*
.
Cosa Casbin NON Fa
- Autenticazione (ovvero verificare
username
epassword
quando un utente accede) - Gestire l'elenco degli utenti o dei ruoli.
È più conveniente per i progetti gestire i loro elenchi di utenti, ruoli o password. Gli utenti di solito hanno le loro password, e Casbin non è progettato come un contenitore di password. Tuttavia, Casbin memorizza il mapping utente-ruolo per lo scenario RBAC.