Overview
Casbin - это мощная и эффективная библиотека контроля доступа с открытым исходным кодом, поддерживающая различные модели контроля доступа для обеспечения авторизации на всех уровнях.
Применение набора правил так же просто, как перечисление субъектов, объектов и желаемого разрешенного действия (или любого другого формата, в зависимости от ваших потребностей) в файле политики. Это синонимично для всех потоков, в которых используется Casbin. Разработчик/администратор имеет полный контроль над компоновкой, выполнением и условиями авторизации, которые устанавливаются через файл модели. Casbin предоставляет Enforcer для проверки входящего запроса на основе файлов политики и модели, предоставленных Enforcer.
Языки, поддерживаемые Casbin
Casbin предоставляет поддержку для различных языков программирования, готовых к интеграции в любой проект и рабочий процесс:
![]() | ![]() | ![]() | ![]() |
|---|---|---|---|
| Casbin | jCasbin | node-Casbin | PHP-Casbin |
| Готово к производству | Готово к производству | Готово к производству | Готово к производству |
![]() | ![]() | ![]() | |
|---|---|---|---|
| PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
| Готово к производству | Готово к производству | Готово к производству | Готово к производству |
Набор функций для разных языков
Мы всегда стараемся сделать так, чтобы у Casbin был одинаковый набор функций для всех языков. Однако реальность не так красива.
| Функция | 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 | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
Примечание - ✅ для Watcher или Role Manager означает только наличие интерфейса в основной библиотеке. Это не указывает на то, есть ли реализация watcher или role manager.
Что такое Casbin?
Casbin - это библиотека авторизации, которую можно использовать в потоках, где мы хотим, чтобы определенный объект или сущность были доступны для конкретного пользователя или субъекта. Тип доступа, т.е. действие, может быть чтение, запись, удаление или любое другое действие, установленное разработчиком. Вот как Casbin наиболее широко используется, и это называется "стандартным" или классическим потоком { subject, object, action }.
Casbin способен обрабатывать множество сложных сценариев авторизации, отличных от стандартного потока. Можно добавить роли (RBAC), атрибуты (ABAC) и т.д.
Что делает Casbin
- Применяет политику в классической форме
{ subject, object, action }или в пользовательской форме, которую вы определили. Поддерживаются как разрешения, так и запреты. - Обрабатывает хранение модели контроля доступа и ее политики.
- Управляет отображениями роль-пользователь и роль-роль (так называемая иерархия ролей в RBAC).
- Поддерживает встроенных суперпользователей, таких как
rootилиadministrator. Суперпользователь может делать все, без явных разрешений. - Предоставляет несколько встроенных операторов для поддержки сопоставления правил. Например,
keyMatchможет сопоставить ключ ресурса/foo/barс шаблоном/foo*.
Что Casbin НЕ делает
- Аутентификация (т.е. проверка
usernameиpasswordпри входе пользователя) - Управление списком пользователей или ролей.
Для проектов удобнее управлять своими списками пользователей, ролей или паролей. У пользователей обычно есть свои пароли, и Casbin не предназначен для хранения паролей. Однако Casbin хранит отображение пользователь-роль для сценария RBAC.






