Общий обзор
Casbin - мощная и эффективная библиотека контроля доступа с открытым исходным кодом. Она обеспечивает поддержку авторизации на основе различных моделей контроля доступа.
Все языки, поддерживаемые Casbin:
Casbin | jCasbin | node-Casbin | PHP-Casbin |
готовое производство | готовое производство | готовое производство | готовое производство |
PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
готовое производство | готовое производство | готовое производство | готовое производство |
Функция для разных языков
Функция | Идти | Java | Node.js | PHP | Python | C# | Дельфи | Ржава | К++ | Lua | Дарт | Elixir |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Обеспечение соблюдения | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
АДАТ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Scaling ABAC (eval() ) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ |
Адаптер | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
API управления | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
RBAC API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Пакетное API | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Фильтрованный адаптер | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ |
Наблюдатель | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ |
Управление ролями | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ❌ |
Многопоточность | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
'в' партнера | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ |
Мы всегда стараемся сделать так, чтобы Касбин имел один и тот же набор возможностей для всех языков. Но реальность не так красива. Нынешний прогресс является приведенной выше таблицей. ✅ для наблюдателя или ролевого менеджера означает только наличие интерфейса в основной библиотеке. Вопрос о том, есть ли доступный наблюдатель или реализация ролевого менеджера - еще один вопрос.
Что такое Casbin?
Что делает Камбин:
- применяют политику классической формы
{subject, object, action}
или настраиваемую форму, как вы указали, и разрешают, и отказывают в разрешениях. - обрабатывает хранение модели контроля доступа и ее политики.
- управление картами ролевых ролей и картами ролей (aka role иерархия ролей в RBAC).
- поддержка встроенного суперпользователя, например
root
илиадминистратора
. Суперпользователь может делать что-либо без явных разрешений. - несколько встроенных операторов для поддержки соответствия правил. Например,
keyMatch
может сопоставить ключ ресурса/foo/bar
с шаблоном/foo*
.
Что не делает Камбин:
- аутентификация (проверка
имя пользователя
и пароль `` при входе пользователя) - управление списком пользователей или ролями. Я считаю, что сам проект более удобно управлять этими сущностями. Пользователи обычно имеют свои пароли, а Casbin не разработан как контейнер паролей. Однако, Касбин хранит отображение ролей пользователей для сценария RBAC.