Parrainé par
Créez plus rapidement une authentification avec prévention de la fraude.
Essayez Stytch pour l'authentification API-first, la gestion des utilisateurs et des organisations, le SSO multi-tenant, l'AMF, la prise d'empreintes digitales des appareils, et bien plus encore.
? Vous recherchez une solution open source de gestion des identités et des accès comme Okta, Auth0, Keycloak ? En savoir plus sur : Casdoor
News : vous vous demandez toujours comment rédiger la bonne politique jCasbin ? Casbin online editor
vient vous aider ! Essayez-le sur : https://casbin.org/editor/
jCasbin est une bibliothèque de contrôle d'accès open source puissante et efficace pour les projets Java. Il prend en charge l'application des autorisations basées sur divers modèles de contrôle d'accès.
Casbine | jCasbin | nœud-Casbin | PHP-Casbine |
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 | bêta-test | prêt pour la production |
write-article
, read-log
. Il ne contrôle pas l'accès à un article ou à un journal spécifique.resource.Owner
peut être utilisé pour obtenir l'attribut d'une ressource./res/*
, /res/:id
et les méthodes HTTP comme GET
, POST
, PUT
, DELETE
.Dans jCasbin, un modèle de contrôle d'accès est résumé dans un fichier CONF basé sur le métamodèle PERM (Policy, Effect, Request, Matchers) . Ainsi, changer ou mettre à niveau le mécanisme d’autorisation d’un projet est aussi simple que modifier une configuration. Vous pouvez personnaliser votre propre modèle de contrôle d'accès en combinant les modèles disponibles. Par exemple, vous pouvez regrouper les rôles RBAC et les attributs ABAC dans un seul modèle et partager un ensemble de règles de stratégie.
Le modèle le plus basique et le plus simple de jCasbin est l'ACL. Le modèle CONF d'ACL est :
# Request definition
[request_definition]
r = sub, obj, act
# Policy definition
[policy_definition]
p = sub, obj, act
# Policy effect
[policy_effect]
e = some(where ( p.eft == allow))
# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
Un exemple de stratégie pour le modèle ACL est le suivant :
p, alice, data1, read
p, bob, data2, write
Cela signifie :
Ce que fait jCasbin :
{subject, object, action}
ou sous une forme personnalisée telle que vous l'avez définie, les autorisations d'autorisation et de refus sont prises en charge.root
ou administrator
. Un superutilisateur peut tout faire sans autorisations explicites.keyMatch
peut mapper une clé de ressource /foo/bar
au modèle /foo*
.Ce que jCasbin ne fait PAS :
username
et password
lorsqu'un utilisateur se connecte)Pour Maven :
<dependency>
<groupId>org.casbin</groupId>
<artifactId>jcasbin</artifactId>
<version>1.x.y (replace with latest version)</version>
</dependency>
https://casbin.org/docs/overview
Vous pouvez également utiliser l'éditeur en ligne (https://casbin.org/editor/) pour rédiger votre modèle et votre politique jCasbin dans votre navigateur Web. Il fournit des fonctionnalités telles que syntax highlighting
et code completion
, tout comme un IDE pour un langage de programmation.
https://casbin.org/docs/tutorials
Nouveau un applicateur jCasbin avec un fichier modèle et un fichier de stratégie :
Enforcer enforcer = new Enforcer ( "path/to/model.conf" , "path/to/policy.csv" );
Remarque : vous pouvez également initialiser un outil d'application avec une stratégie dans la base de données au lieu d'un fichier, voir la section Persistance de la stratégie pour plus de détails.
Ajoutez un hook d'application dans votre code juste avant l'accès :
String sub = "alice" ; // the user that wants to access a resource.
String obj = "data1" ; // the resource that is going to be accessed.
String act = "read" ; // the operation that the user performs on the resource.
if ( enforcer . enforce ( sub , obj , act ) == true ) {
// permit alice to read data1
} else {
// deny the request, show an error
}
Outre le fichier de stratégie statique, jCasbin fournit également une API pour la gestion des autorisations au moment de l'exécution. Par exemple, vous pouvez obtenir tous les rôles attribués à un utilisateur comme ci-dessous :
Roles roles = enforcer . getRoles ( "alice" );
Voir API de gestion des politiques pour plus d’informations.
jCasbin fournit deux ensembles d'API pour gérer les autorisations :
Nous fournissons également une interface utilisateur Web pour la gestion des modèles et la gestion des politiques :
https://casbin.org/docs/adapters
https://casbin.org/docs/role-managers
Modèle | Fichier modèle | Fichier de stratégie |
---|---|---|
Liste de contrôle d'accès | basic_model.conf | basic_policy.csv |
ACL avec superutilisateur | basic_model_with_root.conf | basic_policy.csv |
ACL sans utilisateurs | basic_model_without_users.conf | basic_policy_without_users.csv |
ACL sans ressources | basic_model_without_resources.conf | basic_policy_without_resources.csv |
RBAC | rbac_model.conf | rbac_policy.csv |
RBAC avec rôles de ressources | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
RBAC avec domaines/locataires | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
ABAC | abac_model.conf | N / A |
Reposant | keymatch_model.conf | keymatch_policy.csv |
Refuser le remplacement | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
Priorité | modèle_priorité.conf | priorité_policy.csv |
Middlewares d'authentification pour les frameworks Web : https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
Nous fournissons le support Spring Boot, vous pouvez utiliser casbin-spring-boot-starter pour développer rapidement dans SpringBoot
Dans casbin-spring-boot-starter, nous avons effectué les ajustements suivants :
https://github.com/jcasbin/casbin-spring-boot-starter
Ce projet existe grâce à toutes les personnes qui y contribuent.
Merci à tous nos contributeurs ! [Devenez contributeur]
Soutenez ce projet en devenant sponsor. Votre logo apparaîtra ici avec un lien vers votre site Web. [Devenez parrain]
Ce projet est sous licence Apache 2.0.
Si vous avez des problèmes ou des demandes de fonctionnalités, veuillez nous contacter. Les relations publiques sont les bienvenues.