Проверка заголовков запроса с помощью XACML на платформе Fiware

Я пытаюсь интегрировать AuthzForce с Keyrock для расширенного PDP и хотел узнать, как можно создать правило проверки настраиваемых заголовков в политиках XACML. Насколько я понимаю и в документации, они указали, что с AuthzForce можно проверить тело, сопоставить время запроса и многое другое. Но нигде я не мог найти ресурс о том, как можно создать политику/правило для проверки пользовательских заголовков. Любое предложение или ссылка на любую документацию приветствуются.

1 ответ

@cdan прав - Authzforce PDP, как и любой PDP, может выносить решения по вопросам только в том случае, если ему передается соответствующая информация. Используемый вами PEP-прокси должен будет получить и передать информацию, необходимую для вынесения решения. Например, в Wilma PEP Proxy полезная нагрузка для Authzforce определяется здесь .

В прокси-сервере Wilma PEP политика XACML определяется в JavaScript, как показано ниже, а затем преобразуется в XML перед отправкой в ​​Authzforce:

      const XACMLPolicy = {
    Request: {
      xmlns: 'urn:oasis:names:tc:xacml:3.0:core:schema:wd-17',
      CombinedDecision: 'false',
      ReturnPolicyIdList: 'false',
      Attributes: [
        {
          Category: 'urn:oasis:names:tc:xacml:1.0:subject-category:access-subject',
          Attribute: [
            {
                "AttributeId":"urn:oasis:names:tc:xacml:1.0:subject:subject-id",
                "IncludeInResult": "false",
                "AttributeValue":{
                    "DataType":"http://www.w3.org/2001/XMLSchema#string",
                    "$t":"joe"
                }
            }
          ]
        },
        {
          Category: 'urn:oasis:names:tc:xacml:3.0:attribute-category:resource',
          Attribute: [
            {
              AttributeId: 'urn:oasis:names:tc:xacml:1.0:resource:resource-id',
              IncludeInResult: 'false',
              AttributeValue: {
                DataType: 'http://www.w3.org/2001/XMLSchema#string',
                $t: appId
              }
            },
            {
              AttributeId: 'urn:thales:xacml:2.0:resource:sub-resource-id',
              IncludeInResult: 'false',
              AttributeValue: {
                DataType: 'http://www.w3.org/2001/XMLSchema#string',
                $t: escapeXML(resource)
              }
            }
          ]
        },
        {
          Category: 'urn:oasis:names:tc:xacml:3.0:attribute-category:action',
          Attribute: {
            AttributeId: 'urn:oasis:names:tc:xacml:1.0:action:action-id',
            IncludeInResult: 'false',
            AttributeValue: {
              DataType: 'http://www.w3.org/2001/XMLSchema#string',
              $t: action
            }
          }
        },
        {
          Category: 'urn:oasis:names:tc:xacml:3.0:attribute-category:environment'
        }
      ]
    }
  };

Каждый атрибут в этой полезной нагрузке может нуждаться в проверке. Чтобы добавить проверку пользовательского заголовка, вам нужно будет извлечь его из входящей полезной нагрузки и добавить еще один атрибут (категории urn:oasis:names:tc:xacml:3.0:attribute-category:resource) с соответствующим AttributeId.

Конечно, правила XACML, которые вы определяете, также должны ссылаться на этот же новый идентификатор атрибута при настройке политики доступа, например , «если присутствует пользовательский заголовок, то РАЗРЕШИТЬ , иначе DENY ».

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