Changeset 4035 for TI12-security


Ignore:
Timestamp:
02/07/08 12:27:16 (11 years ago)
Author:
pjkersha
Message:

Fixes following update to NOCS deployment.

  • m2CryptoSSLUtility.HTTPSConnection now overrides putrequest in order to ensure that the URL path is string type. unicode type gives an error
  • added a unit test for BrowsePDP - gatekeeper for MOLES/CSML access control.
Location:
TI12-security/trunk/python
Files:
5 added
8 edited
2 copied

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/Tests/etreewss/client/fred_eg.py

    r4024 r4035  
    44from StringIO import StringIO 
    55 
    6 def c14n_write(elem, file): 
    7     # write new element tree (with xmlns:prefix attributes) as a C14N file 
    8  
    9     root = ElementTree.ElementTree(elem) 
    10  
    11     root._scope = {} 
    12     root._parent = dict((c, p) for p in elem.getiterator() for c in p) 
    13  
    14     # build scope map 
    15     for e in elem.getiterator(): 
    16         scope = [] 
    17         for k in e.keys(): 
    18             if k.startswith("xmlns:"): 
    19                 # move xmlns prefix to scope map 
    20                 scope.append((k[6:], e.get(k))) 
    21                 del e.attrib[k] 
    22         if scope: 
    23             root._scope[e] = scope 
    24  
    25     # save as C14N file 
    26     ElementC14N.write(root, file) 
    276     
    287soapNSURI = 'http://schemas.xmlsoap.org/soap/envelope/' 
     
    4524print "Calling C14N 1st time ..." 
    4625f = StringIO() 
    47 c14n_write(env, f) 
     26ElementC14N.write(ElementC14N.build_scoped_tree(env), f) 
    4827print f.getvalue() 
    4928 
    5029print "Calling C14N 2nd time ..." 
    5130g = StringIO() 
    52 c14n_write(env, g) 
    53 print g.getvalue() 
     31ElementC14N.write(ElementC14N.build_scoped_tree(env), g) 
     32c14n = g.getvalue() 
     33print c14n 
     34filePath = './c14n.xml' 
     35open(filePath, 'w').write(c14n) 
    5436 
     37env2 = ElementC14N.parse(filePath) 
     38print "wsu:Id elements = %s" % env2.findall('.//*[@wsu:Id]', namespaces=ns) 
     39 
     40 
     41 
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/SessionMgr/__init__.py

    r3994 r4035  
    238238        setting""" 
    239239        if self._transport != ProxyHTTPConnection: 
    240             log.info("Ignoring httpProxyHost setting: transport class is " +\ 
     240            log.debug("Ignoring httpProxyHost setting: transport class is " +\ 
    241241                     "not ProxyHTTPConnection type") 
    242242            return 
     
    252252        """Set to list of hosts for which to ignore the HTTP Proxy setting""" 
    253253        if self._transport != ProxyHTTPConnection: 
    254             log.info("Ignore noHttpProxyList setting: transport " + \ 
    255                      "class is not ProxyHTTPConnection type") 
     254            log.debug("Ignore noHttpProxyList setting: transport " + \ 
     255                      "class is not ProxyHTTPConnection type") 
    256256            return 
    257257         
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/authz/pdp/browse.py

    r3994 r4035  
    9797    defParam = {'aaURI': '', 
    9898                'sslCACertFilePathList': [], 
    99                 'tracefile': '', 
     99                'tracefile': None, 
    100100                'acCACertFilePathList': [],  
    101101                'acIssuer': '', 
     
    121121        @param cfgKw: set parameters as key value pairs.""" 
    122122         
    123         self._cfg = cfg or SafeConfigParser() 
    124          
    125123        self.resrcURI = None 
    126124        self.resrcDoc = None 
     
    131129        # Set from config file 
    132130        if isinstance(cfg, basestring): 
     131            self._cfg = SafeConfigParser() 
    133132            self._readConfig(cfg) 
    134133        else: 
     
    234233                continue 
    235234              
    236             if isinstance(paramVal, list): 
     235            if paramName.lower() == 'tracefile': 
     236                val = self._cfg.get(section, paramName) 
     237                if val: 
     238                    setattr(self, paramName, eval(val)) 
     239                else: 
     240                    setattr(self, paramName, None) 
     241                        
     242            elif isinstance(paramVal, list): 
    237243                listVal = expVars(self._cfg.get(section, paramName)).split() 
    238244                setattr(self, paramName, listVal) 
     
    389395            self.smClnt = SessionMgrClient(uri=self.smURI, 
    390396                            sslCACertFilePathList=self.sslCACertFilePathList, 
     397                            tracefile=self.tracefile, 
    391398                            cfg=self.wssCfgFilePath or self._cfg, 
    392399                            cfgFileSection=self.wssCfgSection, 
     
    425432 
    426433        except Exception, e: 
    427             log.error("Request for attribute certificate: %s" % e) 
     434            log.error("Request from Session Manager [%s] " % self.smURI + \ 
     435                      "to Attribute Authority [%s] for " % aaURI + \ 
     436                      "attribute certificate: %s: %s" % (e.__class__, e)) 
    428437            raise AttributeCertificateRequestError() 
    429438         
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/authz/pdp/proftp.py

    r3897 r4035  
    7676                'acIssuer': ''} 
    7777        
    78     def __init__(self, cfg=None, **cfgKw): 
     78    def __init__(self, cfg=None, cfgSection='DEFAULT', **cfgKw): 
    7979        """Initialise settings for WS-Security and SSL for SOAP 
    8080        call to Session Manager 
     
    9393         
    9494        # Set from config file 
    95         if cfgFilePath: 
    96             self._readConfig() 
    97              
     95        # Set from config file 
     96        if isinstance(cfg, basestring): 
     97            self._cfg = SafeConfigParser() 
     98            self._readConfig(cfg) 
     99        else: 
     100            self._cfg = cfg 
     101                         
    98102        # Separate keywords into PDP and WS-Security specific items 
    99103        paramNames = cfgKw.keys() 
     
    107111 
    108112            
    109     def _readConfig(self, section='DEFAULT'): 
     113    def _readConfig(self, cfgFilePath): 
    110114        '''Read PDP configuration file''' 
    111         cfg = SafeConfigParser() 
    112         cfg.read(self.cfgFilePath) 
     115        self._cfg.read(cfgFilePath) 
     116 
     117 
     118    def _parseConfig(self, section='DEFAULT'): 
     119        '''Extract parameters from _cfg config object''' 
     120        log.debug("ProftpPDP._parseConfig ...") 
    113121         
    114122        # Copy directly into attribute of this object 
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/authz/pep.py

    r3897 r4035  
    7676        if isinstance(cfg, basestring): 
    7777            log.debug('Setting PEP config from file: "%s" ...' % cfg) 
     78            self._cfg = SafeConfigParser() 
    7879            self.readConfig(cfg) 
    7980        else: 
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/m2CryptoSSLUtility.py

    r3892 r4035  
    172172         
    173173        if 'postConnectionCheck' in kw: 
    174             self._postConnectionCheck = kw['postConnectionCheck'] 
    175             del kw['postConnectionCheck'] 
     174            self._postConnectionCheck = kw.pop('postConnectionCheck') 
    176175        else: 
    177176            self._postConnectionCheck = SSL.Checker.Checker 
    178177         
    179178        if 'readTimeout' in kw: 
    180             if not isinstance(readTimeout, SSL.timeout): 
     179            if not isinstance(kw['readTimeout'], SSL.timeout): 
    181180                raise AttributeError("readTimeout must be of type " + \ 
    182181                                     "M2Crypto.SSL.timeout") 
    183             self.readTimeout = readTimeout 
    184             del kw['readTimeout'] 
     182            self.readTimeout = kw.pop('readTimeout') 
    185183        else: 
    186184            self.readTimeout = HTTPSConnection.defReadTimeout 
    187185               
    188186        if 'writeTimeout' in kw: 
    189             if not isinstance(writeTimeout, SSL.timeout): 
     187            if not isinstance(kw['writeTimeout'], SSL.timeout): 
    190188                raise AttributeError("writeTimeout must be of type " + \ 
    191189                                     "M2Crypto.SSL.timeout")  
    192             self.writeTimeout = writeTimeout 
    193             del kw['writeTimeout'] 
     190            self.writeTimeout = kw.pop('writeTimeout') 
    194191        else: 
    195192            self.writeTimeout = HTTPSConnection.defWriteTimeout 
     
    209206 
    210207        self.sock.connect((self.host, self.port)) 
     208 
     209    def putrequest(self, method, url, **kw): 
     210        '''Overload to work around bug with unicode type URL''' 
     211        url = str(url) 
     212        _HTTPSConnection.putrequest(self, method, url, **kw) 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/conf/attAuthorityProperties.xml

    r3792 r4035  
    4949        <!--  
    5050        Allow an offset for clock skew between servers running  
    51         security services.  - Use minus sign for time in the past 
     51        security services.  - Measured in seconds, use a minus sign for time in the 
     52    past 
    5253        --> 
    5354    <attCertNotBeforeOff>0</attCertNotBeforeOff> 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/conf/sessionMgrProperties.xml

    r3792 r4035  
    2626    <!-- Password protecting private key file - leave blank if none set --> 
    2727    <keyPwd></keyPwd> 
    28         <wssRefInclNS></wssRefInclNS> 
     28    <!--  
     29        Inclusive namespace prefixes for reference and SignedInfo sections of 
     30        WS-Security digital signature 
     31    --> 
     32    <wssRefInclNS></wssRefInclNS> 
    2933        <wssSignedInfoInclNS></wssSignedInfoInclNS> 
    3034    <!--  
Note: See TracChangeset for help on using the changeset viewer.