Übersicht
Casbin ist eine leistungsstarke und effiziente Open-Source-Zugriffskontrollbibliothek, die Unterstützung für die Erzwingung der Autorisierung basierend auf verschiedenen Zugriffskontrollmodellen bietet.
Alle Sprachen, die von Casbin:
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
Feature | Gehe | Jalta | Node.js | PHP | Python | C# | Jennifer | Rost | C++ | Lua | Dart | Elixir |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Durchsetzung | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ABAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Scaling ABAC (eval() ) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
Management-API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Batch-API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Gefilterter Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Beobachter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Rollen-Manager | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
Multi-Thread | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
'in' des Matches | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
Wir arbeiten immer daran, dass Casbin die gleichen Funktionen für alle Sprachen hat. Aber die Realität ist nicht so schön. Der aktuelle Fortschritt ist wie die obige Tabelle. ✅ für Watcher oder Rollenmanager bedeutet nur das Interface in der Kernbibliothek. Ob ein Beobachter oder eine Rollenmanager Implementierung zur Verfügung steht, ist eine andere Frage.
Was ist Casbin?
Was Casbin macht:
- erzwingen Sie die Richtlinie im klassischen
{subject, object, action}
Formular oder ein individuelles Formular, wie Sie es definiert haben, sowohl zulassen als auch verweigern von Berechtigungen werden unterstützt. - mit der Speicherung des Zugriffskontrollmodells und seiner Richtlinie.
- die Rollenzuordnungen und Rollenzuordnungen verwalten (aka Rollenhierarchie im RBAC).
- unterstützte eingebaute Superuser wie
root
oderAdministrator
. Ein Superuser kann alles ohne explizite Berechtigungen tun. - mehrere eingebaute Operatoren zur Unterstützung der Regelabstimmung. Zum Beispiel
keyMatch
kann eine Ressourcen-Taste/foo/bar
dem Muster/foo*
zuordnen.
Was Casbin NICHT macht:
- Authentifizierung (auch wenn
Benutzername
undPasswort
verifizieren, wenn sich ein Benutzer anmeldet) - die Liste der Benutzer oder Rollen verwalten. Ich glaube, es ist bequemer für das Projekt selbst, diese Entitäten zu verwalten. Benutzer haben in der Regel ihre Passwörter und Casbin ist nicht als Passwort-Container konzipiert. Casbin speichert jedoch die Benutzerrollenzuordnung für das RBAC-Szenario.