Patrocinado por
Cree autenticación con prevención de fraude, más rápido.
Pruebe Stytch para autenticación basada en API, administración de usuarios y organizaciones, SSO multiinquilino, MFA, huellas digitales de dispositivos y más.
? ¿Busca una solución de gestión de acceso e identidad de código abierto como Okta, Auth0, Keycloak? Más información sobre: Casdoor
Noticias : ¿todavía te preocupa cómo escribir la política jCasbin correcta? Casbin online editor
viene a ayudar! Pruébelo en: https://casbin.org/editor/
jCasbin es una biblioteca de control de acceso de código abierto potente y eficiente para proyectos Java. Proporciona soporte para hacer cumplir la autorización basada en varios modelos de control de acceso.
cabina | jCasbin | nodo-Casbin | PHP-Casbin |
listo para producción | listo para producción | listo para producción | listo para producción |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
listo para producción | listo para producción | prueba beta | listo para producción |
write-article
, read-log
. No controla el acceso a un artículo o registro específico.resource.Owner
El propietario se puede utilizar para obtener el atributo de un recurso./res/*
, /res/:id
y métodos HTTP como GET
, POST
, PUT
, DELETE
.En jCasbin, un modelo de control de acceso se abstrae en un archivo CONF basado en el metamodelo PERM (Política, Efecto, Solicitud, Coincidencias) . Entonces, cambiar o actualizar el mecanismo de autorización de un proyecto es tan simple como modificar una configuración. Puedes personalizar tu propio modelo de control de acceso combinando los modelos disponibles. Por ejemplo, puede reunir roles RBAC y atributos ABAC dentro de un modelo y compartir un conjunto de reglas de políticas.
El modelo más básico y sencillo de jCasbin es ACL. El modelo CONF de ACL es:
# 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
Una política de ejemplo para el modelo ACL es como:
p, alice, data1, read
p, bob, data2, write
Significa:
Qué hace jCasbin:
{subject, object, action}
o en un formulario personalizado según lo definido, se admiten tanto permitir como denegar autorizaciones.root
o administrator
. Un superusuario puede hacer cualquier cosa sin permisos explícitos.keyMatch
puede asignar una clave de recurso /foo/bar
al patrón /foo*
.Lo que jCasbin NO hace:
username
y password
cuando un usuario inicia sesión)Para Maven:
<dependency>
<groupId>org.casbin</groupId>
<artifactId>jcasbin</artifactId>
<version>1.x.y (replace with latest version)</version>
</dependency>
https://casbin.org/docs/overview
También puede utilizar el editor en línea (https://casbin.org/editor/) para escribir su modelo y política de jCasbin en su navegador web. Proporciona funciones como syntax highlighting
y code completion
, como un IDE para un lenguaje de programación.
https://casbin.org/docs/tutorials
Nuevo ejecutor jCasbin con un archivo de modelo y un archivo de política:
Enforcer enforcer = new Enforcer ( "path/to/model.conf" , "path/to/policy.csv" );
Nota: también puede inicializar un ejecutor con una política en la base de datos en lugar de un archivo; consulte la sección Persistencia de políticas para obtener más detalles.
Agregue un gancho de cumplimiento a su código justo antes de que se produzca el acceso:
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
}
Además del archivo de política estática, jCasbin también proporciona API para la gestión de permisos en tiempo de ejecución. Por ejemplo, puede obtener todos los roles asignados a un usuario de la siguiente manera:
Roles roles = enforcer . getRoles ( "alice" );
Consulte API de administración de políticas para obtener más uso.
jCasbin proporciona dos conjuntos de API para gestionar permisos:
También proporcionamos una interfaz de usuario basada en web para la gestión de modelos y políticas:
https://casbin.org/docs/adapters
https://casbin.org/docs/role-managers
Modelo | Archivo de modelo | Archivo de política |
---|---|---|
LCA | modelo_basico.conf | política_básica.csv |
ACL con superusuario | modelo_básico_con_raíz.conf | política_básica.csv |
ACL sin usuarios | modelo_basico_sin_usuarios.conf | política_básica_sin_usuarios.csv |
ACL sin recursos | modelo_basico_sin_recursos.conf | política_básica_sin_recursos.csv |
RBAC | rbac_model.conf | rbac_policy.csv |
RBAC con roles de recursos | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
RBAC con dominios/inquilinos | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
ABAC | abac_model.conf | N / A |
Sosegado | keymatch_model.conf | keymatch_policy.csv |
Anulación de denegación | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
Prioridad | modelo_prioridad.conf | política_prioridad.csv |
Middlewares de autenticación para marcos web: https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
Brindamos soporte para Spring Boot, puede usar casbin-spring-boot-starter para desarrollar rápidamente en SpringBoot
En casbin-spring-boot-starter, realizamos los siguientes ajustes:
https://github.com/jcasbin/casbin-spring-boot-starter
Este proyecto existe gracias a todas las personas que contribuyen.
¡Gracias a todos nuestros patrocinadores! [Conviértete en patrocinador]
Apoya este proyecto convirtiéndote en patrocinador. Su logotipo aparecerá aquí con un enlace a su sitio web. [Conviértete en patrocinador]
Este proyecto está bajo la licencia Apache 2.0.
Si tiene algún problema o solicitud de funciones, contáctenos. Las relaciones públicas son bienvenidas.