XACML для Spring Cloud

Я собираюсь защитить свое облачное приложение Spring с помощью OAuth2 и XACML (используя AuthZForce, Balana, AT&T XACML или что-то подобное).

Я хочу использовать микросервисы Spring-Cloud (-Netflix). Чтобы сделать XACML доступным, я думаю, мне нужно это:

  1. PEP для каждого существующего API-сервиса
  2. PDP как новые услуги, которые используются PEP. Поскольку Spring-Cloud (-Netflix) имеет функции балансировки нагрузки (Eureka), мне нужно зарегистрировать эти службы в Eureka и реализовать REST-API.
  3. Поскольку все PDP должны использовать одни и те же политики, они должны храниться централизованно (поставщик политик)

Какой фреймворк больше всего подходит для этого подхода.

обновление 1. Это должно быть возможно с AuthZForce (согласно описанию функции), но я не совсем уверен, как это сделать (нет подробной документации или руководств).


person benkuly    schedule 22.06.2017    source источник


Ответы (1)


Я не так хорошо знаком со всеми фреймворками, поэтому не могу дать объективного ответа на вопрос, какой фреймворк наиболее подходит. Но я могу дать ответ по AuthzForce.

Для части PDP вы можете использовать AuthzForce Core в качестве библиотеки Java. wiki содержит информацию о поставщиках политик и о том, как добавить свои собственные в структуру. если необходимо. Там упоминается один, который получает политики из базы данных MongoDB. Обратите внимание: если вы хотите, чтобы PDP использовали одни и те же политики, центральное хранилище - это одно решение, а другое - использовать репликацию / синхронизацию. Например, если вы используете поставщик политик, который поддерживает получение политик в локальной файловой системе, инструмент децентрализованной синхронизации кластера, такой как csync2 может работать без единой точки отказа.

Кроме того, вас может заинтересовать AuthzForce Server, который предоставляет мультитенантный REST API для PDP и PAP (администрирование политики) в соответствии с Профиль REST XACML (для часть PDP). Если вам нужны только PDP, это, вероятно, будет излишним, но, возможно, стоит взглянуть на него, если ваши требования соответствуют этому направлению.

Для части PEP вы можете повторно использовать authzforce-ce -xacml-model (и зависимости), доступный в Maven Central (groupId = org.ow2.authzforce, artifactId = authzforce-ce-xacml-model) для управления запросами / ответами XACML, которыми обмениваются с REST API ваших PDP. Он в основном содержит все классы с аннотациями JAXB, производные от схемы XACML, и перечисления для стандартных идентификаторов XACML: категории, атрибуты, типы данных и т. Д.

person cdan    schedule 01.07.2017
comment
Спасибо за ответ и за то, что вы добавили вики в Core-Repo. Я дам AuthZForce еще один шанс и приму этот ответ, если он у меня сработает. - person benkuly; 02.07.2017
comment
Хорошо. AuthZForce Core не предоставляет OASIS XACML JSON Profile v1.0, поэтому, к сожалению, мне он не подходит. Извините :( Если Core хотя бы получит поддержку профиля REST, это может изменить мое мнение, но на самом деле я скучаю по этой функции. - person benkuly; 02.07.2017
comment
Если вам нужна поддержка JSON и профиль REST - person cdan; 04.07.2017
comment
... AuthzForce Core действительно недостаточно, но AuthzForce Server есть. Поддерживает XML / JSON (и FI) в своем REST API. Он не поддерживает JSON, как указано в профиле XACML JSON, но использует соглашение о сопоставлении, которое является более общим, поскольку оно применяется к любой существующей модели XML и изначально поддерживается структурами веб-сервисов, такими как Apache CXF (поэтому реализация профиля JSON для XACML не требуется). - person cdan; 04.07.2017
comment
AuthzForce Core и Server теперь поддерживают профиль JSON XACML. AuthzForce также предоставляет минимальный RESTful PDP на основе ядра, либо упакованный как приложение с загрузкой Spring. или просто реализация JAX-RS для повторного использования в любой структуре JAX-RS. - person cdan; 26.02.2018