Fiware IDM: динамический ресурс разрешений
Я развернул приложение, основанное на универсальных средствах активации Fiware, в Docker. Версии:
- Орион 1.14
- Лебедь 1.9.0
- Authzforce 5.4.1
- Keyrock: последний
- Пеп-прокси: 7.0.1
но когда я хочу создать разрешение в keyrock, я не могу найти определенный синтаксис или последовательность символов для ввода динамического ресурса в поле ресурса, например: /resource1/<user>/info
или указать только префикс ресурса, например: /resource2/<whatever>
,
Действительно существует синтаксис для динамического ресурса, и authzforce может создавать разрешения, связанные с динамическим ресурсом, или необходимо создать правило XACML?
1 ответ
Да, необходимо создать расширенное правило XACML. Например, вы можете посмотреть шаблон правила XACML в исходном коде IDM, который используется для генерации основного правила (для статического пути ресурса); вам придется настроить его (кроме удаления кода шаблона) <%...%>
), особенно изменить элементы Target и Condition (используйте функцию XACML string-concatenate для создания строки /resource1/{param}/info
динамически).
Другая сложность заключается в том, чтобы получить {param}
значение в PEP и убедитесь, что оно отправлено в запросе XACML в AuthzForce PDP. Pep-прокси получает / отправляет только следующие атрибуты XACML, как вы можете видеть из клиентского кода Pep Authzforce (имена сокращены для краткости): идентификатор ресурса, идентификатор подресурса, идентификатор действия, субъектная роль. Поэтому, если вы хотите, чтобы идентификатор пользователя был {param}
Например, вы должны изменить только что упомянутый код Pep, т.е. извлечь идентификатор пользователя из userInfo
переменной и добавьте соответствующий атрибут XACML (идентификатор субъекта) в запросе. Или используйте свой собственный Пеп и делайте, что хотите, конечно.