Как я могу дать разрешения на основе типа объекта?

Я пытаюсь установить разрешения на основе типов объектов, которые Орион собирается сохранить. Поскольку разрешения связаны с "конечными точками", я пытался установить их как конечную точку / сущности? 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

Другие вопросы по тегам