Спонсор
Создавайте аутентификацию с защитой от мошенничества быстрее.
Попробуйте Stytch для аутентификации на основе API, управления пользователями и организациями, мультитенантного единого входа, MFA, снятия отпечатков пальцев устройств и многого другого.
? Ищете решение для управления идентификацией и доступом с открытым исходным кодом, такое как Okta, Auth0, Keycloak? Узнать больше о: Casdoor
Новости : все еще беспокоитесь о том, как написать правильную политику jCasbin? Casbin online editor
придет на помощь! Попробуйте: https://casbin.org/editor/.
jCasbin — это мощная и эффективная библиотека контроля доступа с открытым исходным кодом для проектов Java. Он обеспечивает поддержку принудительной авторизации на основе различных моделей контроля доступа.
Касбин | jCasbin | узел-Casbin | PHP-Casbin |
готовый к производству | готовый к производству | готовый к производству | готовый к производству |
ПиКасбин | Касбин.NET | Касбин-CPP | Касбин-РС |
готовый к производству | готовый к производству | бета-тест | готовый к производству |
write-article
, read-log
. Он не контролирует доступ к конкретной статье или журналу.resource.Owner
Владелец может использоваться для получения атрибута ресурса./res/*
, /res/:id
и методы HTTP, такие как GET
, POST
, PUT
, DELETE
.В jCasbin модель управления доступом абстрагируется в файл CONF на основе метамодели PERM (Политика, Эффект, Запрос, Сопоставители) . Таким образом, переключить или обновить механизм авторизации проекта так же просто, как изменить конфигурацию. Вы можете настроить свою собственную модель контроля доступа, комбинируя доступные модели. Например, вы можете объединить роли RBAC и атрибуты ABAC внутри одной модели и использовать один набор правил политики.
Самая базовая и простая модель в jCasbin — это ACL. Модель ACL CONF:
# Request definition
[request_definition]
r = sub, obj, act
# Policy definition
[policy_definition]
p = sub, obj, act
# Policy effect
[policy_effect]
e = some(where ( p.eft == allow))
# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
Пример политики для модели ACL выглядит следующим образом:
p, alice, data1, read
p, bob, data2, write
Это означает:
Что делает jCasbin:
{subject, object, action}
или в настроенной форме, как вы определили, поддерживаются как разрешение, так и запрет авторизации.root
или administrator
. Суперпользователь может делать что угодно без явных разрешений.keyMatch
может сопоставить ключ ресурса /foo/bar
с шаблоном /foo*
.Чего НЕ делает jCasbin:
username
и password
при входе пользователя в систему)Для Мавена:
<dependency>
<groupId>org.casbin</groupId>
<artifactId>jcasbin</artifactId>
<version>1.x.y (replace with latest version)</version>
</dependency>
https://casbin.org/docs/overview
Вы также можете использовать онлайн-редактор (https://casbin.org/editor/), чтобы написать свою модель и политику jCasbin в своем веб-браузере. Он предоставляет такие функции, как syntax highlighting
и code completion
, точно так же, как IDE для языка программирования.
https://casbin.org/docs/tutorials
Новый исполнитель jCasbin с файлом модели и файлом политики:
Enforcer enforcer = new Enforcer ( "path/to/model.conf" , "path/to/policy.csv" );
Примечание. Вы также можете инициализировать исполнитель с политикой в БД, а не в файле. Подробности см. в разделе «Сохранение политики».
Добавьте обработчик принудительного исполнения в свой код прямо перед тем, как произойдет доступ:
String sub = "alice" ; // the user that wants to access a resource.
String obj = "data1" ; // the resource that is going to be accessed.
String act = "read" ; // the operation that the user performs on the resource.
if ( enforcer . enforce ( sub , obj , act ) == true ) {
// permit alice to read data1
} else {
// deny the request, show an error
}
Помимо файла статической политики, jCasbin также предоставляет API для управления разрешениями во время выполнения. Например, вы можете получить все роли, назначенные пользователю, как показано ниже:
Roles roles = enforcer . getRoles ( "alice" );
Дополнительные сведения об использовании см. в разделе API управления политиками.
jCasbin предоставляет два набора API для управления разрешениями:
Мы также предоставляем веб-интерфейс для управления моделями и политиками:
https://casbin.org/docs/adapters
https://casbin.org/docs/role-managers
Модель | Файл модели | Файл политики |
---|---|---|
список управления доступом | Basic_model.conf | Basic_policy.csv |
ACL с суперпользователем | Basic_model_with_root.conf | Basic_policy.csv |
ACL без пользователей | Basic_model_without_users.conf | Basic_policy_without_users.csv |
ACL без ресурсов | Basic_model_without_resources.conf | Basic_policy_without_resources.csv |
РБАК | rbac_model.conf | rbac_policy.csv |
RBAC с ролями ресурсов | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
RBAC с доменами/арендаторами | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
АБАК | abac_model.conf | Н/Д |
RESTful | keymatch_model.conf | keymatch_policy.csv |
Запретить переопределение | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
Приоритет | Priority_model.conf | Priority_policy.csv |
Промежуточное ПО Authz для веб-фреймворков: https://casbin.org/docs/middlewares
https://casbin.org/docs/adopters
Мы предоставляем поддержку Spring Boot, вы можете использовать casbin-spring-boot-starter для быстрой разработки в SpringBoot.
В casbin-spring-boot-starter мы внесли следующие изменения:
https://github.com/jcasbin/casbin-spring-boot-starter
Этот проект существует благодаря всем людям, которые вносят свой вклад.
Спасибо всем нашим сторонникам! [Стать спонсором]
Поддержите этот проект, став спонсором. Здесь появится ваш логотип со ссылкой на ваш сайт. [Стать спонсором]
Этот проект распространяется по лицензии Apache 2.0.
Если у вас есть какие-либо проблемы или пожелания по функциям, пожалуйста, свяжитесь с нами. Пиар приветствуется.