Changeset 6986 for TI12-security


Ignore:
Timestamp:
11/06/10 13:21:47 (9 years ago)
Author:
pjkersha
Message:
 
Location:
TI12-security/trunk/NDG_XACML/ndg/xacml
Files:
6 edited

Legend:

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

    r6807 r6986  
    1515                                           AttributeValueClassFactory) 
    1616from ndg.xacml.core.context.request import Request 
     17from ndg.xacml.core.context.handler import CtxHandlerInterface 
    1718from ndg.xacml.core.context.exceptions import MissingAttributeError 
    1819 
     
    8889    def attributeValueFactory(self): 
    8990        """Get Attribute Value factory function""" 
    90         return self.__attributeValueFactory 
    91                      
     91        return self.__attributeValueFactory  
     92                            
    9293         
    9394class SubjectAttributeDesignator(AttributeDesignator): 
     
    128129                                              if i.dataType == dataType]) 
    129130                     
     131            if context.ctxHandler is not None and len(attributeValueBag) == 0: 
     132                # No match was found - try querying the Policy Information 
     133                # Point via the Context Handler to see if values for the  
     134                # attribute specified in this designator can be retrieved  
     135                # externally. If retrieved, it's added to the bag.  The input 
     136                # subject may be updated too so that the values are cached for 
     137                # subsequent requests 
     138                attributeValues = context.ctxHandler.pipQuery(subject, self) 
     139                attributeValueBag.extend(attributeValues) 
     140                     
    130141        if len(attributeValueBag) == 0 and self.mustBePresent: 
    131142            raise MissingAttributeError('"MustBePresent" is set for %r but no ' 
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/context/handler.py

    r6776 r6986  
    1717    """Policy Enforcement Point Interface""" 
    1818    __metaclass__ = ABCMeta 
     19    __slots__ = () 
    1920     
    2021    @classmethod 
     
    4041        
    4142        
    42 class AbstractContextHandler(PEPInterface): 
    43     """Context Handler Abstract Base class""" 
     43class CtxHandlerInterface(PEPInterface): 
     44    """Context Handler interface.""" 
    4445    __metaclass__ = ABCMeta 
    45     __slots__ = ('__pdp',) 
     46    __slots__ = () 
    4647     
    47     def __init__(self): 
    48         self.__pdp = None 
     48    def pepQuery(self, request, designator): 
     49        """Query a Policy Information Point to retrieve the attribute values 
     50        corresponding to the specified input designator.  Optionally, update the 
     51        requestCtx.  This could be a subject, environment or resource.  Matching 
     52        attributes values are returned 
     53        """ 
     54        return [] 
    4955         
    50     @classmethod 
    51     def __subclasshook__(cls, C): 
    52         """Derived class must implement __call__""" 
    53         if PEPInterface.__subclasshook__(C) == NotImplemented: 
    54             return NotImplemented 
    55          
    56         if cls is AbstractContextHandler: 
    57             if any("__call__" in B.__dict__ for B in C.__mro__): 
    58                 return True 
    59              
    60         return NotImplemented 
    61      
    62     def _getPDP(self): 
    63         return self.__pdp 
    64      
    65     def _setPDP(self, value): 
    66         if not isinstance(value, PDPInterface): 
    67             raise TypeError('Expecting %r derived type for "pdp" attribute; ' 
    68                             'got %r' % (PDPInterface, type(pdp))) 
    69          
    70         self.__pdp = value 
    71          
    72     pdp = property(_getPDP, _setPDP, doc="Interface to PDP") 
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/context/pdp.py

    r6825 r6986  
    2121    single policy but not policy sets 
    2222    """ 
    23     __slots__ = ('__policy', ) 
     23    __slots__ = ('__policy',) 
    2424     
    2525    def __init__(self, policy=None): 
     
    3232        if policy is not None: 
    3333            self.policy = policy 
    34              
    35         self.__request = None 
    36  
     34         
    3735    @classmethod 
    3836    def fromPolicySource(cls, source, readerFactory): 
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/context/pdpinterface.py

    r6807 r6986  
    1717    """Interface class for XACML Policy Enforcement Point""" 
    1818    __metaclass__ = ABCMeta 
    19  
     19    __slots__ = () 
     20     
    2021    @abstractmethod 
    2122    def evaluate(self, request): 
  • TI12-security/trunk/NDG_XACML/ndg/xacml/core/context/request.py

    r6777 r6986  
    2222 
    2323class Request(XacmlContextBase): 
    24     """XACML Request class""" 
    25     __slots__ = ('__subjects', '__resources', '__action', '__environment') 
     24    """XACML Request class 
     25     
     26    @param ctxHandler: reference to context handler to enable the PDP to 
     27    query for additional attributes.  The Context Handler itself queries a 
     28    Policy Information Point.  This handler setting may be omitted.  If so, 
     29    the PDP will rely entirely on the input request context for making  
     30    access control decisions 
     31    @type ctxHandler: ndg.xacml.core.context.handler.CtxHandlerInterface /  
     32    None 
     33    """ 
     34    __slots__ = ( 
     35        '__subjects',  
     36        '__resources',  
     37        '__action',  
     38        '__environment', 
     39        '__ctxHandler', 
     40    ) 
    2641    ELEMENT_LOCAL_NAME = 'Request' 
    2742     
     
    3449        self.__environment = None 
    3550         
     51        self.__ctxHandler = None 
     52                     
    3653    @property 
    3754    def subjects(self): 
     
    7188              
    7289        self.__environment = value    
     90 
     91    @property 
     92    def ctxHandler(self): 
     93        """Get Context handler used by evaluate method to query the PIP for 
     94        additional attribute values 
     95        """ 
     96        return self.__ctxHandler 
     97 
     98    @ctxHandler.setter 
     99    def ctxHandler(self, value): 
     100        """Set Context handler used by evaluate method to query the PIP for 
     101        additional attribute values 
     102        """ 
     103        if not isinstance(value, CtxHandlerInterface): 
     104            raise TypeError('Expecting %r type for "ctxHandler" attribute; got ' 
     105                            '%r' % (CtxHandlerInterface, type(value))) 
     106             
     107        self.__ctxHandler = value  
  • TI12-security/trunk/NDG_XACML/ndg/xacml/test/test_context.py

    r6807 r6986  
    2222from ndg.xacml.core.context.handler import AbstractContextHandler 
    2323from ndg.xacml.core.attribute import Attribute 
    24 from ndg.xacml.core.attributevalue import (AttributeValueClassFactory,  
    25                                            AttributeValue) 
     24from ndg.xacml.core.attributevalue import AttributeValueClassFactory 
    2625from ndg.xacml.core.context.request import Request 
    2726from ndg.xacml.core.context.response import Response 
Note: See TracChangeset for help on using the changeset viewer.