Перейти к основному контенту

Overview

Casbin - это мощная и эффективная библиотека контроля доступа с открытым исходным кодом, поддерживающая различные модели контроля доступа для обеспечения авторизации на всех уровнях.

Применение набора правил так же просто, как перечисление субъектов, объектов и желаемого разрешенного действия (или любого другого формата, в зависимости от ваших потребностей) в файле политики. Это синонимично для всех потоков, в которых используется Casbin. Разработчик/администратор имеет полный контроль над компоновкой, выполнением и условиями авторизации, которые устанавливаются через файл модели. Casbin предоставляет Enforcer для проверки входящего запроса на основе файлов политики и модели, предоставленных Enforcer.

Языки, поддерживаемые Casbin

Casbin предоставляет поддержку для различных языков программирования, готовых к интеграции в любой проект и рабочий процесс:

golangjavanodejsphp
CasbinjCasbinnode-CasbinPHP-Casbin
Готово к производствуГотово к производствуГотово к производствуГотово к производству
pythondotnetc++rust
PyCasbinCasbin.NETCasbin-CPPCasbin-RS
Готово к производствуГотово к производствуГотово к производствуГотово к производству

Набор функций для разных языков

Мы всегда стараемся сделать так, чтобы у Casbin был одинаковый набор функций для всех языков. Однако реальность не так красива.

ФункцияGoJavaNode.jsPHPPythonC#DelphiRustC++LuaDartElixir
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

  1. Применяет политику в классической форме { subject, object, action } или в пользовательской форме, которую вы определили. Поддерживаются как разрешения, так и запреты.
  2. Обрабатывает хранение модели контроля доступа и ее политики.
  3. Управляет отображениями роль-пользователь и роль-роль (так называемая иерархия ролей в RBAC).
  4. Поддерживает встроенных суперпользователей, таких как root или administrator. Суперпользователь может делать все, без явных разрешений.
  5. Предоставляет несколько встроенных операторов для поддержки сопоставления правил. Например, keyMatch может сопоставить ключ ресурса /foo/bar с шаблоном /foo*.

Что Casbin НЕ делает

  1. Аутентификация (т.е. проверка username и password при входе пользователя)
  2. Управление списком пользователей или ролей.

Для проектов удобнее управлять своими списками пользователей, ролей или паролей. У пользователей обычно есть свои пароли, и Casbin не предназначен для хранения паролей. Однако Casbin хранит отображение пользователь-роль для сценария RBAC.