XACML-ресурсы

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

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

<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="[email protected]"
                        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="[email protected]"
                        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="[email protected]"
                        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="[email protected]"
                    MustBePresent="true" />
                <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Clear</AttributeValue>
            </Apply>
        </Apply>
    </ Condition >
</Rule>

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


person Nicholas    schedule 26.02.2013    source источник


Ответы (2)


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

person Asela    schedule 27.02.2013

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

person Nicholas    schedule 26.07.2013