Aperçu
Casbin est une bibliothèque de contrôle d'accès open-source puissante et efficace qui fournit le support pour l'application des autorisations basées sur différents modèles de contrôle d'accès.
Toutes les langues supportées par Casbin:
![]() | ![]() | ![]() | ![]() |
---|---|---|---|
Casbin | jCasbin | node-Casbin | PHP-Casbin |
prêt à la production | prêt à la production | prêt à la production | prêt à la production |
![]() | ![]() | ![]() | ![]() |
---|---|---|---|
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
prêt à la production | prêt à la production | prêt à la production | prêt à la production |
Ensemble de fonctionnalités pour différentes langues
Fonctionnalités | Aller | Java | Node.js | PHP | Python | N° C | Delphi | Rouille | C++ | Lua | Fléchette | Elixir |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Application de la loi | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
ABAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Scaling ABAC (eval() ) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Adaptateur | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
API de gestion | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
API par lots | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Adaptateur filtré | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Observateur | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Responsable des rôles | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
Multi-Threading | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
'in' du matcher | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
Nous travaillons toujours de notre mieux pour que Casbin ait le même ensemble de fonctionnalités pour toutes les langues. Mais la réalité n'est pas si belle. La progression actuelle est la table ci-dessus. ✅ pour Watcher ou Role Manager, cela signifie seulement avoir l'interface dans la bibliothèque du noyau. La question de savoir s'il y a un observateur disponible ou une mise en œuvre d'un gestionnaire de rôles est une autre question.
Qu'est-ce que Casbin?
Ce que Casbin fait:
- appliquer la politique dans le formulaire classique
{subject, object, action}
ou un formulaire personnalisé tel que vous le définissez, les deux autorisent et refusent les autorisations sont prises en charge. - gérer le stockage du modèle de contrôle d'accès et sa politique.
- gérer les mappings des rôles-utilisateurs et les mappings des rôles-rôles (aka la hiérarchie des rôles dans RBAC).
- prendre en charge les super-utilisateurs intégrés comme
root
ouadministrateur
. Un super-utilisateur peut tout faire sans autorisation explicite. - plusieurs opérateurs intégrés pour supporter la recherche de règles. Par exemple,
keyMatch
peut associer une clé de ressource/foo/bar
au modèle/foo*
.
Ce que Casbin ne fait pas:
- authentication (aka verify
username
andpassword
when a user logs in) - gérer la liste des utilisateurs ou des rôles. Je pense qu'il est plus pratique pour le projet lui-même de gérer ces entités. Les utilisateurs ont généralement leurs mots de passe, et Casbin n'est pas conçu comme un conteneur de mot de passe. Cependant, Casbin stocke la cartographie des rôles des utilisateurs pour le scénario de la RBAC.