2013-12-05 6 views
2

мои вопросы применимы как к серверу идентификации wso2 4.5 (IS), так и к балане «автономно».Wso2 Identity server: улучшает производительность AttributeFinderModule для атрибутов по ресурсам

Я успешно обрабатываю многократные запросы XACML, отправленные в службу разрешения в IS (интерфейс веб-службы PDP), как указано в «XACML v3.0 Multiple Solution Profile Version 1.0».

Я нашел в Интернете несколько примеров пользовательского «искателя атрибутов», но во всех этих примерах реализация извлекает атрибуты объекта (например, роль субъекта), а не ресурсов. В моем случае использования я отправил PDP запрос xacml со всеми атрибутами объекта и списком идентификаторов ресурсов. Я реализовал атрибут finder для извлечения атрибутов ресурсов из внешней системы (например, базы данных или веб-службы). Первый вопрос: этот подход не рекомендуется по той же причине?

Второй вопрос касается выполнения этой реализации AttributeFinder, если количество ресурсов увеличивается.

Предположим, что мы ограничили список атрибутов ресурсов, которые могут использоваться в определениях политик. Например, небольшое количество атрибутов.

Метод от org.wso2.balana.finder.AttributeFinderModule:

public EvaluationResult findAttribute(URI attributeType, URI attributeId, 
      String issuer, URI category, EvaluationCtx context) 

должны возвращать значение/значения одного атрибута. Итак, если политика оценивает больше атрибутов для ресурса, этот метод называется более раз для одного и того же ресурса. Я мог бы избежать многократного вызова внешней системы для разных атрибутов одного и того же ресурса, если я прочитал все атрибуты ресурса при первом вызове этого метода и сохранил эти данные (например, по локальной переменной потока), которые могут быть используется для последующих вызовов.

Итак, если у меня есть несколько запросов, и политика в отношении атрибутов ресурсов применяется к этому запросу, метод вызывается больше раз не только для каждого атрибута того же ресурса, но и для каждого ресурса. Чтобы улучшить производительность, я хотел бы уменьшить количество вызовов во внешнюю систему , поэтому я хотел бы прочитать при первом вызове метода «findAttribute» атрибуты для всех ресурсов (или подмножества, если у меня есть очень большой задавать). Для этого мне нужен доступ в методе «findAttribute» к списку всех идентификаторов ресурса в запросе. EvaluationCtx, который я получаю в атрибуте атрибута , является только одним из тех, которые находятся в наборе, который построен из нескольких запросов. Полный набор обрабатывается циклически в методе org.wso2.balana.PDP.evaluate (EvaluationCtx) и недоступен в методе «findAttribute».

Я мог бы, например, расширить класс PDP, чтобы опубликовать в локальной потоковой переменной полный набор EvaluationCtx (или список идентификаторов ресурсов), но это может работать в автономном режиме «balana», а не на сервере wso2 Identity. Любые идеи?

спасибо. Stefano

ответ

0

Да .. Вы можете использовать любые типы категорий .. это могут быть субъект, ресурс или любая вещь .. Но большую часть времени политики ищут атрибуты пользователя. Думаю, это причина того, что образец будет выглядеть так.

Да .. это большое предложение. В качестве улучшения я создал jira. Если вы хотите внести свой вклад. Вы можете предоставить патч ...

Однако, с Identity Server, существует отдельный интерфейс для реализации. Он был обернут интерфейсом Баланы. Более подробную информацию об этом вы найдете here. На самом деле с сервером Identity он использует кеши атрибутов для повышения производительности. Однако, если бы мы могли добавить ваше предложение к Балане, это помогло бы улучшить больше.

+0

так вы хотите сказать, если мы сформируем запрос для субъекта, ресурса и действия, например <Атрибуты Категория = "действие> somedata это будет более эффективная производительность мудрым? – Utsav

+0

Нет ... Не было бы никакого эффекта добавления но в WSO2 Identity Server существует простой абстрактный интерфейс, который позволяет думать, что только четыре типа категорий ... На самом деле это имеет некоторое улучшение. Но если у вас есть новая категория, вы можете написать расширение этого атрибута и напишите http://svn.wso2.org/repos/wso2/carbon/platform/trunk/components/identity/org.wso2.carbon.identity.entitlement/src/main/java/org/wso2/carbon/identity/entitlement /pip/AbstractPIPAttributeFinder.java – Asela

+0

Привет, Асела спасибо за ваш ответ, я опубликовал некоторые вопросы, касающиеся этого вопроса. Вы можете взглянуть на эту проблему https://wso2.org/jira/browse/COMMONS-107 – Utsav

 Смежные вопросы

  • Нет связанных вопросов^_^