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.