Changeset 6747 for TI12-security


Ignore:
Timestamp:
16/03/10 16:40:35 (10 years ago)
Author:
pjkersha
Message:

Adding parsing for Subject type and SubjectMatch? elements.

Location:
TI12-security/trunk/NDG_XACML/ndg/xacml
Files:
6 added
7 edited
1 moved

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/__init__.py

    r6746 r6747  
    1010__contact__ = "Philip.Kershaw@stfc.ac.uk" 
    1111__revision__ = "$Id: $" 
    12      
     12from ndg.xacml.utils import TypedList 
     13 
    1314     
    1415class PolicyComponent(object): 
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/attribute.py

    r6746 r6747  
    1010__contact__ = "Philip.Kershaw@stfc.ac.uk" 
    1111__revision__ = "$Id: $" 
    12 from ndg.xacml.core import PolicyComponent 
     12from ndg.xacml.core.expression import Expression 
     13     
    1314 
    14  
    15 class AttributeValue(PolicyComponent): 
     15class AttributeValue(Expression): 
    1616    """XACML Attribute Value type""" 
    17     __slots__ = ('__dataType', '__value') 
     17    ELEMENT_LOCAL_NAME = 'AttributeValue' 
     18    __slots__ = ('__value',)  
    1819     
    1920    def __init__(self): 
    20         self.__dataType = None 
     21        super(AttributeValue, self).__init__() 
    2122        self.__value = None 
    22          
    23     def _get_dataType(self): 
    24         return self.__dataType 
    25  
    26     def _set_dataType(self, value): 
    27         if not isinstance(value, basestring): 
    28             raise TypeError('Expecting %r type for "dataType" ' 
    29                             'attribute; got %r' % (basestring, type(value))) 
    30              
    31         self.__dataType = value    
    32  
    33     dataType = property(_get_dataType, _set_dataType, None,  
    34                         "attribute value data type")   
    35         
     23            
    3624    def _get_value(self): 
    3725        return self.__value 
     
    4432        self.__value = value   
    4533 
    46     value = property(_get_value, _set_value, None, "attribute value")     
     34    value = property(_get_value, _set_value, None, "expression value")     
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/match.py

    r6746 r6747  
    1111__revision__ = "$Id: $" 
    1212from ndg.xacml.core import PolicyComponent 
     13from ndg.xacml.core.attributedesignator import AttributeDesignator 
     14from ndg.xacml.core.attributeselector import AttributeSelector 
    1315from ndg.xacml.core.attribute import AttributeValue 
    1416 
     
    1618class MatchBase(PolicyComponent): 
    1719    ELEMENT_LOCAL_NAME = None 
    18      
     20    MATCH_ID_ATTRIB_NAME = 'MatchId' 
     21    ATTRIBUTE_VALUE_ELEMENT_LOCAL_NAME = 'AttributeValue' 
     22 
    1923    __slots__ = ( 
    2024        '__attributeValue',  
     
    4650                              "attribute value") 
    4751 
     52    @property 
     53    def attributeDesignator(self): 
     54        return self.__attributeDesignator 
     55     
     56    @attributeDesignator.setter 
     57    def attributeDesignator(self, value): 
     58        if not isinstance(value, AttributeDesignator): 
     59            raise TypeError('Expecting %r type for "attributeDesignator" ' 
     60                            'attribute; got %r' %  
     61                            (AttributeDesignator, type(value))) 
     62             
     63        self.__attributeDesignator = value 
     64  
     65    @property 
     66    def attributeSelector(self): 
     67        return self.__attributeSelector 
     68     
     69    @attributeSelector.setter 
     70    def attributeSelector(self, value): 
     71        if not isinstance(value, AttributeSelector): 
     72            raise TypeError('Expecting %r type for "matchId" ' 
     73                            'attribute; got %r' %  
     74                            (AttributeSelector, type(value))) 
     75             
     76        self.__attributeSelector = value 
     77                        
    4878    def _getMatchId(self): 
    4979        return self.__matchId 
     
    6292    "Subject Match Type" 
    6393    ELEMENT_LOCAL_NAME = 'SubjectMatch' 
     94    ATTRIBUTE_DESIGNATOR_ELEMENT_LOCAL_NAME = 'SubjectAttributeDesignator'    
    6495     
    6596     
     
    6798    "Resource Match" 
    6899    ELEMENT_LOCAL_NAME = 'ResourceMatch' 
     100    ATTRIBUTE_DESIGNATOR_ELEMENT_LOCAL_NAME = 'ResourceAttributeDesignator' 
    69101     
    70102     
     
    72104    "Action match" 
    73105    ELEMENT_LOCAL_NAME = 'ActionMatch' 
     106    ATTRIBUTE_DESIGNATOR_ELEMENT_LOCAL_NAME = 'ActionAttributeDesignator'     
    74107     
    75108     
     
    77110    "Environment Match" 
    78111    ELEMENT_LOCAL_NAME = 'EnvironmentMatch' 
    79      
     112    ATTRIBUTE_DESIGNATOR_ELEMENT_LOCAL_NAME = 'EnvironmentAttributeDesignator' 
  • TI12-security/trunk/NDG_XACML/ndg/xacml/parsers/etree/actionreader.py

    r6746 r6747  
    44@author: pjkersha 
    55''' 
     6 
     7class ActionReader: 
     8    pass 
  • TI12-security/trunk/NDG_XACML/ndg/xacml/parsers/etree/rulereader.py

    r6746 r6747  
    1 """NDG XACML ElementTree based Target Element reader  
     1"""NDG XACML ElementTree based Rule Element reader  
    22 
    33NERC DataGrid Project 
     
    1313from ndg.xacml.core.condition import Condition 
    1414from ndg.xacml.core.target import Target 
     15from ndg.xacml.parsers import XMLParseError 
    1516from ndg.xacml.parsers.etree import QName 
    1617from ndg.xacml.parsers.etree.reader import ETreeAbstractReader 
     
    2324    ''' 
    2425    def __call__(self, obj): 
    25         """Parse policy object""" 
     26        """Parse rule object""" 
    2627        elem = super(RuleReader, self)._parse(obj) 
    2728         
     
    6162            elif localName == Target.ELEMENT_LOCAL_NAME: 
    6263                rule.target = TargetReader.parse(childElem) 
     64             
     65            else: 
     66                raise XMLParseError("XACML Rule child element name %r not " 
     67                                    "recognised" % localName)                 
    6368                 
    6469        return rule 
  • TI12-security/trunk/NDG_XACML/ndg/xacml/parsers/etree/subjectreader.py

    r6746 r6747  
    1 ''' 
    2 Created on 16 Mar 2010 
     1"""NDG XACML ElementTree based Subject Element reader  
    32 
    4 @author: pjkersha 
    5 ''' 
    6  
    7 class SubjectReader(object): 
    8     ''' 
    9     classdocs 
    10     ''' 
     3NERC DataGrid Project 
     4""" 
     5__author__ = "P J Kershaw" 
     6__date__ = "16/03/10" 
     7__copyright__ = "(C) 2010 Science and Technology Facilities Council" 
     8__contact__ = "Philip.Kershaw@stfc.ac.uk" 
     9__license__ = "BSD - see LICENSE file in top-level directory" 
     10__contact__ = "Philip.Kershaw@stfc.ac.uk" 
     11__revision__ = "$Id: $" 
     12from ndg.xacml.core.subject import Subject 
     13from ndg.xacml.parsers import XMLParseError 
     14from ndg.xacml.parsers.etree import QName 
     15from ndg.xacml.parsers.etree.reader import ETreeAbstractReader 
     16from ndg.xacml.parsers.etree.matchreader import SubjectMatchReader 
    1117 
    1218 
    13     def __init__(selfparams): 
    14         ''' 
    15         Constructor 
    16         ''' 
     19class SubjectReader(ETreeAbstractReader): 
     20    '''ElementTree based XACML Rule parser 
     21    ''' 
     22    def __call__(self, obj): 
     23        """Parse subject object""" 
     24        elem = super(SubjectReader, self)._parse(obj) 
    1725         
     26        subject = Subject() 
     27        cls = Subject 
     28         
     29        localName = QName.getLocalPart(elem.tag) 
     30        if localName != cls.ELEMENT_LOCAL_NAME: 
     31            raise XMLParseError("No \"%s\" element found" %  
     32                                cls.ELEMENT_LOCAL_NAME) 
     33             
     34        # Parse match elements 
     35        for childElem in elem: 
     36            localName = QName.getLocalPart(childElem.tag) 
     37             
     38            if localName == cls.MATCH_TYPE.ELEMENT_LOCAL_NAME: 
     39                subject.matches.append(SubjectMatchReader.parse(childElem)) 
     40             
     41            else: 
     42                raise XMLParseError("XACML Subject child element name %r not " 
     43                                    "recognised" % localName)        
     44        return subject  
  • TI12-security/trunk/NDG_XACML/ndg/xacml/parsers/etree/targetreader.py

    r6746 r6747  
    3333            raise XMLParseError('No "%s" element found' %  
    3434                                cls.ELEMENT_LOCAL_NAME) 
    35                      
     35         
    3636        # Parse sub-elements 
    3737        for childElem in elem: 
     
    3939             
    4040            if localName == cls.SUBJECTS_ELEMENT_LOCAL_NAME: 
    41                 target.subjects.append(SubjectReader.parse(childElem)) 
     41                for subjElem in childElem: 
     42                    target.subjects.append(SubjectReader.parse(subjElem)) 
    4243                                 
    4344            elif localName == cls.RESOURCES_ELEMENT_LOCAL_NAME: 
    44                 target.resources.append(ResourceReader.parse(childElem)) 
     45                for resourceElem in childElem: 
     46                    target.resources.append(ResourceReader.parse(resourceElem)) 
    4547                 
    4648            elif localName == cls.ACTIONS_ELEMENT_LOCAL_NAME: 
    47                 target.actions.append(ActionReader.parse(childElem)) 
     49                for targetElem in childElem: 
     50                    target.actions.append(ActionReader.parse(targetElem)) 
    4851                 
    4952            elif localName == cls.ENVIRONMENTS_ELEMENT_LOCAL_NAME: 
    50                 target.environments.append(EnvironmentReader.parse(childElem)) 
    51                  
     53                for environElem in childElem: 
     54                    target.environments.append(EnvironmentReader.parse( 
     55                                                                environElem)) 
    5256            else: 
    5357                raise XMLParseError("XACML Target child element name %r not " 
Note: See TracChangeset for help on using the changeset viewer.