Ресурсы XACML

Я пытаюсь написать код, который позволит пользователям получать доступ к контенту с веб-сайта на основе ролей безопасности. Таким образом, некоторые пользователи могут видеть весь контент, а некоторые могут видеть только URL с определенными расширениями.

Большая часть моего кода работает, но у меня проблемы с доступом к 3 подкатегориям.

<Rule Effect="Permit" RuleId="accesses">
    <Description>Permission for lower clearance</Description>
    <Target>
        <Resources>
            <Resource>
                <ResourceMatch
                    MatchId="urn:oasis:names:tc:xacml:1.0:function:regexp-string-match">
                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">home.html
                    </AttributeValue>
                    <ResourceAttributeDesignator
                        AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
                        DataType="http://www.w3.org/2001/XMLSchema#string" Issuer="policy-admin@website.com"
                        MustBePresent="true" />
                </ResourceMatch>
            </Resource>
            <Resource>
                <ResourceMatch
                    MatchId="urn:oasis:names:tc:xacml:1.0:function:regexp-string-match">
                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">localweather.html
                    </AttributeValue>
                    <ResourceAttributeDesignator
                        AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
                        DataType="http://www.w3.org/2001/XMLSchema#string" Issuer="policy-admin@website.com"
                        MustBePresent="true" />
                </ResourceMatch>
            </Resource>
            <Resource>
                <ResourceMatch
                    MatchId="urn:oasis:names:tc:xacml:1.0:function:regexp-string-match">
                    <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">about.html
                    </AttributeValue>
                    <ResourceAttributeDesignator
                        AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
                        DataType="http://www.w3.org/2001/XMLSchema#string" Issuer="policy-admin@website.com"
                        MustBePresent="true" />
                </ResourceMatch>
            </Resource>
        </Resources>
    </Target>
    <Condition>
        <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:regexp-string-match">
            <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-one-and-only">
                <SubjectAttributeDesignator AttributeId="AccessLevel"
                    DataType="http://www.w3.org/2001/XMLSchema#string" Issuer="policy-admin@website.com"
                    MustBePresent="true" />
                <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Clear</AttributeValue>
            </Apply>
        </Apply>
    </ Condition >
</Rule>

У меня есть эти 3 ресурса, и когда я запускаю программу, я получаю "неопределенный" ответ. Могу ли я иметь только 1 ресурс на правило? Что-то еще бросает исключение?

2 ответа

Решение

Вы можете иметь древовидные ресурсы для цели. Согласно вашему правилу они будут действовать как "ИЛИ". Проверьте с помощью своего запроса XACML, может быть, вы отправляете запрос, который не соответствует политике (policy имеет MustBePresent="true", это означает, что если атрибут отсутствует, PDP может создать неопределенную ошибку). Пожалуйста, измените их на "false" и посмотреть.

Это была проблема состояния. Все ресурсы были файлами конечного уровня. У меня не было правильного набора значений атрибутов пользователя для моей политики. Я сравнил его со своей схемой LDAP и получил его работать.

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