Passer au contenu principal

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 :

golangjavanodejsphp
CasbinjCasbinnode-CasbinPHP-Casbin
Prêt pour la productionPrêt pour la productionPrêt pour la productionPrêt pour la production
pythondotnetc++rust
PyCasbinCasbin.NETCasbin-CPPCasbin-RS
Prêt pour la productionPrêt pour la productionPrêt pour la productionPrê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éGoJavaNode.jsPHPPythonC#DelphiRustC++LuaDartElixir
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

  1. 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.
  2. Gérer le stockage du modèle de contrôle d'accès et de sa politique.
  3. Gérer les mappages rôle-utilisateur et rôle-rôle (alias hiérarchie de rôles dans RBAC).
  4. Prend en charge les superutilisateurs intégrés comme root ou administrateur. Un superutilisateur peut tout faire sans permissions explicites.
  5. 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

  1. Authentification (alias vérification du nom d'utilisateur et du mot de passe lorsqu'un utilisateur se connecte)
  2. 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.