Проверка заголовков запроса с помощью 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 ».