Gesponsert von
Erstellen Sie schneller eine Authentifizierung mit Betrugsprävention.
Probieren Sie Stytch für API-First-Authentifizierung, Benutzer- und Organisationsverwaltung, mandantenfähiges SSO, MFA, Geräte-Fingerprinting und mehr aus.
? Suchen Sie nach einer Open-Source-Lösung für das Identitäts- und Zugriffsmanagement wie Okta, Auth0, Keycloak? Erfahren Sie mehr über: Casdoor
Neuigkeiten : Sind Sie immer noch besorgt darüber, wie Sie die richtige jCasbin-Richtlinie schreiben? Casbin online editor
hilft Ihnen weiter! Probieren Sie es aus unter: https://casbin.org/editor/
jCasbin ist eine leistungsstarke und effiziente Open-Source-Zugriffskontrollbibliothek für Java-Projekte. Es bietet Unterstützung für die Durchsetzung der Autorisierung basierend auf verschiedenen Zugriffskontrollmodellen.
Kasbin | jCasbin | Knoten-Casbin | PHP-Casbin |
produktionsreif | produktionsreif | produktionsreif | produktionsreif |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
produktionsreif | produktionsreif | Betatest | produktionsreif |
write-article
oder read-log
verwendet werden. Es kontrolliert nicht den Zugriff auf einen bestimmten Artikel oder ein bestimmtes Protokoll.resource.Owner
kann verwendet werden, um das Attribut für eine Ressource abzurufen./res/*
, /res/:id
und HTTP-Methoden wie GET
, POST
, PUT
, DELETE
.In jCasbin wird ein Zugriffskontrollmodell basierend auf dem PERM-Metamodell (Policy, Effect, Request, Matchers) in eine CONF-Datei abstrahiert. Das Ändern oder Aktualisieren des Autorisierungsmechanismus für ein Projekt ist also genauso einfach wie das Ändern einer Konfiguration. Sie können Ihr eigenes Zugangskontrollmodell anpassen, indem Sie die verfügbaren Modelle kombinieren. Beispielsweise können Sie RBAC-Rollen und ABAC-Attribute in einem Modell zusammenfassen und einen Satz Richtlinienregeln gemeinsam nutzen.
Das grundlegendste und einfachste Modell in jCasbin ist ACL. Das ACL-Modell CONF lautet:
# 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
Eine Beispielrichtlinie für das ACL-Modell sieht wie folgt aus:
p, alice, data1, read
p, bob, data2, write
Es bedeutet:
Was jCasbin macht:
{subject, object, action}
-Formular oder einem benutzerdefinierten Formular, wie Sie es definiert haben. Es werden sowohl Zulassungs- als auch Verweigerungsberechtigungen unterstützt.root
oder administrator
. Ein Superuser kann alles ohne explizite Berechtigungen tun.keyMatch
einen Ressourcenschlüssel /foo/bar
dem Muster /foo*
zuordnen.Was jCasbin NICHT macht:
username
und password
überprüfen, wenn sich ein Benutzer anmeldet)Für Maven:
<dependency>
<groupId>org.casbin</groupId>
<artifactId>jcasbin</artifactId>
<version>1.x.y (replace with latest version)</version>
</dependency>
https://casbin.org/docs/overview
Sie können auch den Online-Editor (https://casbin.org/editor/) verwenden, um Ihr jCasbin-Modell und Ihre Richtlinie in Ihrem Webbrowser zu schreiben. Es bietet Funktionen wie syntax highlighting
und code completion
, genau wie eine IDE für eine Programmiersprache.
https://casbin.org/docs/tutorials
Neuer jCasbin-Enforcer mit einer Modelldatei und einer Richtliniendatei:
Enforcer enforcer = new Enforcer ( "path/to/model.conf" , "path/to/policy.csv" );
Hinweis: Sie können einen Enforcer auch mit einer Richtlinie in der Datenbank statt in einer Datei initialisieren. Weitere Informationen finden Sie im Abschnitt „Richtlinienpersistenz“.
Fügen Sie direkt vor dem Zugriff einen Durchsetzungs-Hook in Ihren Code ein:
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
}
Neben der statischen Richtliniendatei stellt jCasbin auch eine API für die Berechtigungsverwaltung zur Laufzeit bereit. Beispielsweise können Sie alle einem Benutzer zugewiesenen Rollen wie folgt abrufen:
Roles roles = enforcer . getRoles ( "alice" );
Weitere Informationen zur Verwendung finden Sie unter Richtlinienverwaltungs-APIs.
jCasbin bietet zwei Sätze von APIs zum Verwalten von Berechtigungen:
Wir bieten auch eine webbasierte Benutzeroberfläche für die Modellverwaltung und Richtlinienverwaltung:
https://casbin.org/docs/adapters
https://casbin.org/docs/role-managers
Modell | Modelldatei | Richtliniendatei |
---|---|---|
ACL | basic_model.conf | basic_policy.csv |
ACL mit Superuser | basic_model_with_root.conf | basic_policy.csv |
ACL ohne Benutzer | basic_model_without_users.conf | basic_policy_without_users.csv |
ACL ohne Ressourcen | basic_model_without_resources.conf | basic_policy_without_resources.csv |
RBAC | rbac_model.conf | rbac_policy.csv |
RBAC mit Ressourcenrollen | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
RBAC mit Domänen/Mandanten | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
ABAC | abac_model.conf | N / A |
RUHIG | keymatch_model.conf | keymatch_policy.csv |
Verweigern-Überschreiben | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
Priorität | prioritätsmodell.conf | Priority_policy.csv |
Authz-Middlewares für Web-Frameworks: https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
Wir bieten Spring Boot-Unterstützung. Sie können casbin-spring-boot-starter verwenden, um schnell in SpringBoot zu entwickeln
In casbin-spring-boot-starter haben wir folgende Anpassungen vorgenommen:
https://github.com/jcasbin/casbin-spring-boot-starter
Dieses Projekt existiert dank aller Menschen, die dazu beitragen.
Vielen Dank an alle unsere Unterstützer! [Unterstützer werden]
Unterstützen Sie dieses Projekt, indem Sie Sponsor werden. Hier erscheint Ihr Logo mit einem Link zu Ihrer Website. [Sponsor werden]
Dieses Projekt ist unter der Apache 2.0-Lizenz lizenziert.
Wenn Sie Probleme oder Funktionswünsche haben, kontaktieren Sie uns bitte. PR ist willkommen.