Overview
Casbin est une bibliothèque de contrôle d'accès open-source puissante et efficace qui prend en charge divers modèles de contrôle d'accès pour imposer l'autorisation à tous les niveaux.
L'application d'un ensemble de règles est aussi simple que de lister les sujets, les objets et l'action autorisée souhaitée (ou tout autre format selon vos besoins) dans un fichier policy. Ceci est synonyme à travers tous les flux dans lesquels Casbin est utilisé. Le développeur/administrateur a un contrôle total sur la disposition, l'exécution et les conditions d'autorisation, qui sont définies via le fichier model. Casbin fournit un Enforcer pour valider une demande entrante en fonction des fichiers de politique et de modèle donnés à l'Enforcer.
Langues prises en charge par Casbin
Casbin offre un support pour divers langages de programmation, prêt à être intégré dans n'importe quel projet et flux de travail :
Casbin | jCasbin | node-Casbin | PHP-Casbin |
Prêt pour la production | Prêt pour la production | Prêt pour la production | Prêt pour la production |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
Prêt pour la production | Prêt pour la production | Prêt pour la production | Prêt pour la production |
Ensemble de fonctionnalités pour différentes langues
Nous travaillons toujours au mieux pour que Casbin ait le même ensemble de fonctionnalités pour toutes les langues. Cependant, la réalité n'est pas aussi belle.
Fonctionnalité | 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 | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
Note - ✅ pour Watcher ou Role Manager signifie seulement avoir l'interface dans la bibliothèque principale. Cela n'indique pas s'il existe une mise en œuvre de watcher ou de gestionnaire de rôles.
Qu'est-ce que Casbin ?
Casbin est une bibliothèque d'autorisation qui peut être utilisée dans des flux où nous voulons qu'un certain objet
ou entité soit accessible par un utilisateur spécifique ou sujet
. Le type d'accès, c'est-à-dire action
, peut être lire, écrire, supprimer, ou toute autre action définie par le développeur. C'est ainsi que Casbin est le plus largement utilisé, et on l'appelle le flux "standard" ou classique { sujet, objet, action }
.
Casbin est capable de gérer de nombreux scénarios d'autorisation complexes autres que le flux standard. Il peut y avoir l'ajout de rôles (RBAC), attributs (ABAC), etc.
Ce que fait Casbin
- Appliquer la politique dans la forme classique
{ sujet, objet, action }
ou une forme personnalisée que vous avez définie. Les autorisations d'autoriser et de refuser sont prises en charge. - Gérer le stockage du modèle de contrôle d'accès et de sa politique.
- Gérer les mappages rôle-utilisateur et rôle-rôle (alias hiérarchie de rôles dans RBAC).
- Prend en charge les superutilisateurs intégrés comme
root
ouadministrateur
. Un superutilisateur peut tout faire sans permissions explicites. - Fournir plusieurs opérateurs intégrés pour supporter la correspondance des règles. Par exemple,
keyMatch
peut mapper une clé de ressource/foo/bar
au motif/foo*
.
Ce que Casbin ne fait PAS
- Authentification (alias vérification du
nom d'utilisateur
et dumot de passe
lorsqu'un utilisateur se connecte) - Gérer la liste des utilisateurs ou des rôles.
Il est plus pratique pour les projets de gérer leurs listes d'utilisateurs, de rôles ou de mots de passe. Les utilisateurs ont généralement leurs mots de passe, et Casbin n'est pas conçu comme un conteneur de mots de passe. Cependant, Casbin stocke le mappage utilisateur-rôle pour le scénario RBAC.