Overview
Casbin es una poderosa y eficiente biblioteca de control de acceso de código abierto que soporta varios modelos de control de acceso para hacer cumplir la autorización de manera integral.
Hacer cumplir un conjunto de reglas es tan simple como listar sujetos, objetos y la acción permitida deseada (o cualquier otro formato según sus necesidades) en un archivo de política. Esto es sinónimo en todos los flujos en los que se utiliza Casbin. El desarrollador/administrador tiene control completo sobre la disposición, ejecución y condiciones para la autorización, que se establecen a través del archivo de modelo. Casbin proporciona un Enforcer para validar una solicitud entrante basada en los archivos de política y modelo dados al Enforcer.
Idiomas soportados por Casbin
Casbin ofrece soporte para varios lenguajes de programación, listos para ser integrados en cualquier proyecto y flujo de trabajo:
Casbin | jCasbin | node-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 | Listo para producción | Listo para producción |
Conjunto de Características para Diferentes Lenguajes
Siempre estamos trabajando lo mejor posible para que Casbin tenga el mismo conjunto de características para todos los idiomas. Sin embargo, la realidad no es tan hermosa.
Característica | 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 | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
Nota - ✅ para Watcher o Role Manager solo significa tener la interfaz en la biblioteca central. No indica si hay una implementación de watcher o role manager disponible. ¿Qué es Casbin?
Casbin es una biblioteca de autorización que se puede utilizar en flujos donde queremos que un cierto objeto
o entidad sea accedido por un usuario específico o sujeto
.
El tipo de acceso, es decir, acción
, puede ser leer, escribir, eliminar o cualquier otra acción establecida por el desarrollador. Así es como Casbin se utiliza más ampliamente, y se llama el flujo "estándar" o clásico { sujeto, objeto, acción }
. Casbin es capaz de manejar muchos escenarios de autorización complejos además del flujo estándar.
Puede haber la adición de roles (RBAC), atributos (ABAC), etc. Qué Hace Casbin
Hacer cumplir la política en la forma clásica { sujeto, objeto, acción }
o una forma personalizada como usted definió.
- Se admiten tanto las autorizaciones de permitir como de denegar. Manejar el almacenamiento del modelo de control de acceso y su política.
- Gestionar las asignaciones de rol-usuario y las asignaciones de rol-rol (también conocido como jerarquía de roles en RBAC).
- Apoyar a superusuarios incorporados como
root
oadministrador
. - Apoyo a superusuarios integrados como
root
oadministrator
. Un superusuario puede hacer cualquier cosa sin permisos explícitos. - Proporcionar múltiples operadores integrados para soportar la coincidencia de reglas. Por ejemplo,
keyMatch
puede mapear una clave de recurso/foo/bar
al patrón/foo*
.
Lo que Casbin NO Hace
- Autenticación (es decir, verificar
username
ypassword
cuando un usuario inicia sesión) - Gestionar la lista de usuarios o roles.
Es más conveniente para los proyectos gestionar sus listas de usuarios, roles o contraseñas. Los usuarios suelen tener sus contraseñas, y Casbin no está diseñado como un contenedor de contraseñas. Sin embargo, Casbin almacena el mapeo de usuario-rol para el escenario RBAC.