Overview
Casbin ist eine leistungsstarke und effiziente Open-Source-Zugriffskontrollbibliothek, die verschiedene Zugriffskontrollmodelle zur Durchsetzung der Autorisierung unterstützt.
Die Durchsetzung eines Regelwerks ist so einfach wie das Auflisten von Subjekten, Objekten und der gewünschten erlaubten Aktion (oder einem anderen Format nach Ihren Bedürfnissen) in einer Richtlinien Datei. Dies ist synonym für alle Abläufe, in denen Casbin verwendet wird. Der Entwickler/Administrator hat die volle Kontrolle über das Layout, die Ausführung und die Bedingungen für die Autorisierung, die über die Modell Datei festgelegt werden. Casbin stellt einen Enforcer zur Verfügung, um eine eingehende Anfrage auf Basis der dem Enforcer gegebenen Richtlinien- und Modell-Dateien zu validieren.
Von Casbin unterstützte Sprachen
Casbin bietet Unterstützung für verschiedene Programmiersprachen, bereit zur Integration in jedes Projekt und Workflow:
Casbin | jCasbin | node-Casbin | PHP-Casbin |
Produktionsbereit | Produktionsbereit | Produktionsbereit | Produktionsbereit |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
Produktionsbereit | Produktionsbereit | Produktionsbereit | Produktionsbereit |
Funktionsumfang für verschiedene Sprachen
Wir arbeiten stets daran, dass Casbin für alle Sprachen den gleichen Funktionsumfang bietet. Die Realität ist jedoch nicht so schön.
Funktion | 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 | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
Hinweis - ✅ für Watcher oder Role Manager bedeutet nur, dass die Schnittstelle in der Kernbibliothek vorhanden ist. Es ist nicht aussagekräftig, ob eine Watcher- oder Role-Manager-Implementierung verfügbar ist.
Was ist Casbin?
Casbin ist eine Autorisierungsbibliothek, die in Abläufen verwendet werden kann, in denen wir möchten, dass ein bestimmtes Objekt
oder eine Entität von einem spezifischen Benutzer oder Subjekt
zugegriffen wird. Die Art des Zugriffs, d.h. Aktion
, kann lesen, schreiben, löschen oder jede andere vom Entwickler festgelegte Aktion sein. So wird Casbin am häufigsten verwendet und es wird der "Standard" oder klassische { Subjekt, Objekt, Aktion }
Ablauf genannt.
Casbin ist in der Lage, viele komplexe Autorisierungsszenarien zu bewältigen, die über den Standardablauf hinausgehen. Es können Rollen (RBAC), Attribute (ABAC), usw. hinzugefügt werden.
Was Casbin macht
- Durchsetzung der Richtlinie in der klassischen
{ Subjekt, Objekt, Aktion }
Form oder einer von Ihnen definierten benutzerdefinierten Form. Sowohl Zulassungs- als auch Verweigerungsautorisierungen werden unterstützt. - Verwaltung der Speicherung des Zugriffskontrollmodells und seiner Richtlinie.
- Verwaltung der Zuordnungen von Rollen zu Benutzern und von Rollen zu Rollen (auch Rollenhierarchie in RBAC genannt).
- Unterstützung von eingebauten Superbenutzern wie
root
oderadministrator
. Ein Superbenutzer kann alles tun, ohne explizite Berechtigungen. - Bietet mehrere eingebaute Operatoren zur Unterstützung der Regelabgleichung. Zum Beispiel kann
keyMatch
einen Ressourcenschlüssel/foo/bar
dem Muster/foo*
zuordnen.
Was Casbin NICHT macht
- Authentifizierung (d.h. Überprüfung von
Benutzername
undPasswort
beim Einloggen eines Benutzers) - Verwaltung der Liste von Benutzern oder Rollen.
Es ist für Projekte bequemer, ihre Listen von Benutzern, Rollen oder Passwörtern zu verwalten. Benutzer haben in der Regel ihre Passwörter und Casbin ist nicht als Passwortcontainer konzipiert. Casbin speichert jedoch die Zuordnung von Benutzern zu Rollen für das RBAC-Szenario.