Как я могу дать разрешения на основе типа объекта? - PullRequest
0 голосов
/ 02 апреля 2019

Я пытаюсь установить разрешения на основе типов объектов, которые Орион собирается сохранить.Поскольку разрешения связаны с «конечными точками», я пытался установить их как конечную точку / сущности? Type = Truck (например).Проблема в том, что он говорит мне (Keyrock через ответ PEP), что пользователь не авторизован в приложении.Я просмотрел все соединения в базе данных, и мне кажется, что он авторизован, имеет свою роль, свое разрешение и свою назначенную организацию - все в единственном приложении, которое было создано.

ВУчебное пособие нечто подобное появляется с запросом POST, но это потому, что в теле сообщения отправляется тип объекта.В случае GET я не вижу этого так ясно, поскольку он идет в URL, но попытка этого не сработала.

Возможно ли, что это не должно быть сделано таким образом?Как следует создавать разрешения такого типа?

1 Ответ

0 голосов
/ 10 мая 2019

Кажется излишним использовать Authzforce для этого, но вы могли бы добиться этого, используя string-starts-with и состояние string-at-least-one-member-of, например ::1003 *

<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> проверяет HTTP-глагол GET , <condition> гарантирует - URL ресурса будет соответствовать Truck, Car или Bicycle

...