Как я могу дать разрешения на основе типа объекта?
Я пытаюсь установить разрешения на основе типов объектов, которые Орион собирается сохранить. Поскольку разрешения связаны с "конечными точками", я пытался установить их как конечную точку / сущности? Type=Truck (например). Проблема в том, что он говорит мне (Keyrock через ответ PEP), что пользователь не авторизован в приложении. Я просмотрел все соединения в базе данных, и мне кажется, что он авторизован, имеет свою роль, свое разрешение и свою назначенную организацию - все в единственном приложении, которое было создано.
В учебнике нечто подобное появляется с запросом POST, но это происходит потому, что в теле сообщения отправляется тип объекта. В случае с GET я не вижу этого так ясно, так как он идет в URL, но попытка этого не сработала.
Возможно ли, что это не должно быть сделано таким образом? Как должен быть создан этот тип разрешений?
1 ответ
Использование Authzforce для этого кажется излишним, но вы можете добиться этого, используя
string-starts-with
и string-at-least-one-member-of
состояние например:
<Target>
<AnyOf>
<AllOf>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">GET</AttributeValue>
<AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true" />
</Match>
</AllOf>
</AnyOf>
</Target>
<Condition>
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of">
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-bag">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/v2/entities?type=Car</AttributeValue>
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/v2/entities?type=Truck</AttributeValue>
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">/v2/entities?type=Bicycle</AttributeValue>
</Apply>
<AttributeDesignator Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" AttributeId="urn:thales:xacml:2.0:resource:sub-resource-id" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true" />
</Apply>
</Condition>
Эта <target>
проверяет GET HTTP Verb,<condition>
гарантирует - URL ресурса будет соответствовать Truck
, Car
или Bicycle