Обзор
Casbin — это эффективная библиотека управления доступом с открытым исходным кодом, которая обеспечивает авторизацию и поддерживает несколько моделей контроля доступа.
Реализация управления доступом на основе правил проста: определите субъектов, объекты и разрешенные действия в файле policy в любом удобном для вас формате. Этот подход единообразен во всех реализациях Casbin. Файл model предоставляет разработчикам и администраторам полный контроль над логикой авторизации — структурой, потоком выполнения и условиями. Компонент Enforcer проверяет входящие запросы на соответствие вашей модели и политике.
Языки программирования, поддерживаемые Casbin
Casbin предоставляет нативную поддержку множества языков программирования, что позволяет интегрировать его в широкий спектр проектов и рабочих процессов:
![]() | ![]() | ![]() | ![]() |
|---|---|---|---|
| Casbin | jCasbin | node-Casbin | PHP-Casbin |
| Готово к использованию в продакшене | Готово к использованию в продакшене | Готово к использованию в продакшене | Готово к использованию в продакшене |
![]() | ![]() | ![]() | |
|---|---|---|---|
| PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
| Готово к использованию в продакшене | Готово к использованию в продакшене | Готово к использованию в продакшене | Готово к использованию в продакшене |
Набор функций по языкам
Мы стремимся к паритету функций во всех реализациях на разных языках; полная унификация пока не достигнута.
| Функция | Go | Java | Node.js | PHP | Python | C# | Delphi | Rust | C++ | Lua | Dart | Elixir |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Принуждение (Enforcement) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| RBAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| ABAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Масштабируемый ABAC (eval()) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Management API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| RBAC API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Batch API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Filtered Adapter | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Watcher | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
| Role Manager | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
| Многопоточность | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| Оператор 'in' в matcher | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
Галочка (✅) для Watcher или Role Manager означает, что интерфейс существует в основной библиотеке; это не гарантирует наличие реализации для данного языка.
Что такое Casbin?
Casbin — это библиотека авторизац ии для приложений, которым требуется контролируемый доступ к ресурсам. Обычно субъект (пользователь или сервис) запрашивает доступ к объекту (ресурсу или сущности) для выполнения действия (например, чтение, запись или удаление). Вы определяете эти действия в соответствии с требованиями вашего приложения. Это стандартный поток { subject, object, action }, который Casbin обрабатывает чаще всего.
Casbin также поддерживает более сложные сценарии через роли (RBAC), атрибуты (ABAC) и другие паттерны.
Что делает Casbin
- Применяет политики в классическом формате
{ subject, object, action }или в любом другом пользовательском формате, включая как разрешение, так и запрет доступа. - Управляет хранением данных модели контроля доступа и политик.
- Обрабатывает связи «пользователь–роль» и «роль–роль» (иерархия ролей RBAC).
- Поддерживает встроенных суперпользователей (например,
root,administrator) с неограниченным доступом без явных правил. - Предоставляет встроенные операторы для сопоставления по шаблону (например,
keyMatchсопоставляет/foo/barсо шаблоном/foo*).
Что Casbin не делает
- Аутентификация пользователей — проверка имен пользователей и паролей при входе.
- Управление списками пользователей или ролей — ведение списков пользователей или ролей.
Большинство приложений уже управляют пользователями, ролями и учетными данными. Casbin фокусируется только на авторизации и не хранит и не проверяет пароли. В режиме RBAC он поддерживает ассоциации «пользователь–роль».
Следующие шаги
- Создайте рабочий пример на Go, Node.js, Python или Java.
- Посмотрите, как Casbin сравнивается с OpenFGA, OPA, CASL и Cedar.







Comments are powered by giscus and GitHub Discussions. They load from giscus.app and GitHub only after you click the button below.