Контроль доступа на основе ролей

Есть ли какая-либо система управления доступом на основе ролей на основе Java с открытым исходным кодом?

Ответ 2

Я предполагаю, что вопрос, на который вы пытаетесь ответить, следующий:

Доступ ли пользователь u к операции op на объекте o?

Следует учитывать, как ваши объекты домена и группы пользователей определяются с точки зрения бизнеса (вне механизма AC). Для любой реализации RBAC вам необходимо настроить ее, чтобы сообщить, что представляют собой ваши пользователи и группы пользователей. Это повлияет на ваш выбор реализации RBAC.

Другой (более конкретный) вопрос: вам нужно поддерживать права переопределения, включает и исключает? В частности, хотите ли вы поддерживать сценарий, что объект o1 доступен для usergroup g1, но не пользователь u1 (который является частью группы g1)?

В зависимости от конкретных ответов jguard (который построен поверх JAAS) может быть очень хорошим вариантом - http://jguard.net/

Ответ 4

Существует множество возможных решений, но лучше всего (т.е. удовлетворяет ваши потребности, не будучи слишком тяжелым или слишком сложным для реализации) зависит от ваших требований:

  • Вы говорите об управлении доступом для веб-службы или что-то еще?

  • Какой контроль доступа вы хотите реализовать? Основано исключительно на URL-адресах ресурсов или в зависимости от состояния/метаданных запрашиваемых объектов? Роли простые или иерархические? Требуются ли разные действия для разных ролей?

  • Вам также нужно иметь дело с авторизацией?

Ответ 5

Существует несколько платформ, которые предоставляют вам систему авторизации:

  1. Spring Security
    Spring Security широко настраиваемый фреймворк широко используется для решения проблем аутентификации и контроля доступа (авторизации), возникающих в любом корпоративном приложении, разработанном на Java.

  2. Апач Широ
    Apache Shiro - это мощная и простая в использовании инфраструктура безопасности Java, которая выполняет аутентификацию, авторизацию, криптографию и управление сеансами. С помощью простого в понимании API Shiros вы можете быстро и легко защитить любое приложение - от самых маленьких мобильных приложений до самых больших веб-приложений и приложений для предприятий.

  3. JAAS (службы аутентификации и авторизации Java)
    JAAS - это один из API-интерфейсов безопасности, который состоит из пакетов Java, предназначенных исключительно для аутентификации и авторизации пользователей. Представленный как дополнительный пакет в Java SE 1.3, JAAS позже был интегрирован в JDK, начиная с JDK 1.4.

  4. OACC
    Эта инфраструктура безопасности приложений Java предназначена для точного управления доступом на уровне объектов. Его задача - предоставить полнофункциональный API для обеспечения, а также для управления потребностями приложения в аутентификации и авторизации. Он предлагает полную реализацию гибкой и надежной модели безопасности.

  5. jCasbin
    jCasbin - это мощная и эффективная библиотека управления доступом с открытым исходным кодом для проектов Java. Он обеспечивает поддержку принудительной авторизации на основе различных моделей контроля доступа.

Ответ 6

Крепость - это ANSI RBAC совместимый движок (INCITS 359) и выпущена под лицензией BSD с открытым исходным кодом. Вы можете оттянуть это отсюда: http://iamfortress.org.