2013-02-26 2 views
0

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

Большая часть моего кода работает, но у меня проблемы с доступом для 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="[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 ресурс за правило? Что-то еще бросает исключение?

ответ

0

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

0

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

Смежные вопросы