Changeset 3790 for TI12-security/trunk


Ignore:
Timestamp:
17/04/08 13:46:30 (12 years ago)
Author:
pjkersha
Message:

Fixes to PEP and PDP for BADC deployment

Location:
TI12-security/trunk/python/ndg.security.common/ndg/security/common
Files:
3 added
6 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/SessionMgr/__init__.py

    r3153 r3790  
    2929    HostCheck 
    3030from SessionMgr_services import SessionMgrServiceLocator 
     31 
     32import logging 
     33log = logging.getLogger(__name__) 
    3134 
    3235 
     
    105108    Exception class to call""" 
    106109 
    107     excepMap = {'SessionNotFound': SessionNotFound, 
    108                 'UserSessionX509CertNotBeforeTimeError': SessionCertTimeError, 
    109                 'UserSessionExpired': SessionExpired, 
    110                 'InvalidUserSession': InvalidSession 
    111                 } 
     110    excepMap = { 
     111        'SessionNotFound':                         SessionNotFound, 
     112        'UserSessionX509CertNotBeforeTimeError':   SessionCertTimeError, 
     113        'UserSessionExpired':                      SessionExpired, 
     114        'InvalidUserSession':                      InvalidSession 
     115    } 
    112116     
    113117    #_________________________________________________________________________ 
     
    150154        @param signatureHandlerKw: keywords to configure signature handler""" 
    151155 
     156        log.debug("SessionMgrClient.__init__ ...") 
     157         
    152158        self.__srv = None 
    153159        self.__uri = None 
    154         self._transdict = {}         
     160        self._transdict = {} 
     161        self._transport = None        
    155162         
    156163        if uri: 
     
    167174        # WS-Security Signature handler - set only if any of the keywords were 
    168175        # set 
     176        log.debug("signatureHandlerKw = %s" % signatureHandlerKw) 
    169177        if setSignatureHandler: 
    170178            self.__signatureHandler = SignatureHandler(**signatureHandlerKw) 
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/authz/pdp/__init__.py

    r3765 r3790  
    2626class PDPUserAccessDenied(PDPError): 
    2727    """Access Denied""" 
    28     def __init__(self, msg=PDPUserAccessDenied.__doc__): 
    29         PDPError.__init__(msg) 
    30      
     28    def __init__(self, msg=None): 
     29        PDPError.__init__(self, msg or PDPUserAccessDenied.__doc__) 
     30  
     31class PDPUserInsufficientPrivileges(PDPError): 
     32    """Insufficient privileges to access resource""" 
     33    def __init__(self, msg=None): 
     34        PDPError.__init__(self, msg or PDPUserInsufficientPrivileges.__doc__) 
     35    
    3136class PDPUserNotLoggedIn(PDPError): 
    3237    """User is not logged in""" 
    33     def __init__(self, msg=PDPUserNotLoggedIn.__doc__): 
    34         PDPError.__init__(msg) 
     38    def __init__(self, msg=None): 
     39        PDPError.__init__(self, msg or PDPUserNotLoggedIn.__doc__) 
    3540 
    3641class PDPMissingResourceConstraints(PDPError): 
    3742    """Access constraints for resource are not set correctly""" 
    38     def __init__(self, msg=PDPMissingResourceConstraints.__doc__): 
    39         PDPError.__init__(msg) 
     43    def __init__(self, msg=None): 
     44        PDPError.__init__(self, msg or PDPMissingResourceConstraints.__doc__) 
    4045             
    4146  
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/authz/pdp/moles.py

    r3771 r3790  
    66__author__ = "P J Kershaw" 
    77__date__ = "04/04/08" 
    8 __copyright__ = "(C) 200* STFC & NERC" 
     8__copyright__ = "(C) 2008 STFC & NERC" 
    99__contact__ = "P.J.Kershaw@rl.ac.uk" 
    1010__license__ = \ 
     
    2020import urllib2 
    2121import socket 
     22from ConfigParser import SafeConfigParser 
     23 
     24# For parsing of properties file 
     25from os.path import expandvars as expVars 
    2226 
    2327from ndg.security.common.authz.pdp import PDPInterface, PDPError, \ 
     
    2731    SessionCertTimeError, SessionExpired, InvalidSession, \ 
    2832    AttributeRequestDenied                    
     33     
     34from ndg.security.common.X509 import X500DN                
    2935 
    3036class InvalidAttributeCertificate(PDPError): 
    3137    "The certificate containing authorisation roles is invalid" 
    32     def __init__(self, msg=InvalidAttributeCertificate.__doc__): 
    33         PDPError.__init__(msg) 
     38    def __init__(self, msg=None): 
     39        PDPError.__init__(self, msg or InvalidAttributeCertificate.__doc__) 
    3440     
    3541class SessionExpiredMsg(PDPError): 
    3642    'Session has expired.  Please re-login' 
    37     def __init__(self, msg=SessionExpiredMsg.__doc__): 
    38         PDPError.__init__(msg) 
     43    def __init__(self, msg=None): 
     44        PDPError.__init__(self, msg or SessionExpiredMsg.__doc__) 
    3945 
    4046class InvalidSessionMsg(PDPError): 
    4147    'Session is invalid.  Please try re-login' 
    42     def __init__(self, msg=InvalidSessionMsg.__doc__): 
    43         PDPError.__init__(msg) 
     48    def __init__(self, msg=None): 
     49        PDPError.__init__(self, msg or InvalidSessionMsg.__doc__) 
    4450 
    4551class InitSessionCtxError(PDPError): 
    4652    'A problem occured initialising a session connection' 
    47     def __init__(self, msg=InvalidSessionMsg.__doc__): 
    48         PDPError.__init__(msg) 
     53    def __init__(self, msg=None): 
     54        PDPError.__init__(self, msg or InitSessionCtxError.__doc__) 
    4955 
    5056class AttributeCertificateRequestError(PDPError): 
    5157    'A problem occured requesting a certificate containing authorisation roles' 
    52     def __init__(self, msg=InvalidSessionMsg.__doc__): 
    53         PDPError.__init__(msg) 
     58    def __init__(self, msg=None): 
     59        PDPError.__init__(self,msg or AttributeCertificateRequestError.__doc__) 
    5460 
    5561class URLCannotBeOpened(PDPError): 
     
    119125         
    120126        # Copy directly into attribute of this object 
    121         for paramName, paramVal in PEP.defParam.items(): 
     127        for paramName, paramVal in MolesPDP.defParam.items(): 
    122128            if isinstance(paramVal, list): 
    123                 paramListVal = expVars(cfg(section, paramName)).split() 
     129                paramListVal = expVars(cfg.get(section, paramName)).split() 
    124130                setattr(self, paramName, paramListVal) 
    125131            else: 
    126                 setattr(self, paramName, expVars(cfg(section, paramName)))             
     132                setattr(self, paramName, expVars(cfg.get(section, paramName)))             
    127133 
    128134 
     
    242248            # Create Session Manager client 
    243249            self.smClnt = SessionMgrClient(uri=self.smURI, 
    244                             cfgfilePath=self.cfgFilePath, 
     250                            cfgFilePath=self.cfgFilePath, 
     251                            cfgFileSection='WS-Security', 
    245252                            sslCACertFilePathList=self.sslCACertFilePathList, 
    246253                            tracefile=self.tracefile, 
     
    296303            raise InvalidAttributeCertificate()   
    297304          
    298         # Check it's issuer is as expected 
    299         if attCert.issuer != g.securityCfg.acIssuer: 
     305        # Check it's issuer is as expected - Convert to X500DN to do equality  
     306        # test 
     307        acIssuerDN = X500DN(self.acIssuer) 
     308        if attCert.issuerDN != acIssuerDN: 
    300309            log.info('PDP -access denied: Attribute Certificate ' + \ 
    301                 'issuer DN, "%s" ' % attCert.issuer + \ 
     310                'issuer DN, "%s" ' % attCert.issuerDN + \ 
    302311                'must match this data provider\'s Attribute Authority ' + \ 
    303                 'DN: "%s"' % g.securityCfg.acIssuer) 
     312                'DN: "%s"' % acIssuerDN) 
    304313            raise InvalidAttributeCertificate() 
    305314 
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/authz/pep.py

    r3765 r3790  
    2525import os 
    2626 
     27# System path modification for module import 
     28import sys 
     29 
     30from ConfigParser import SafeConfigParser 
    2731from ndg.security.common.AttCert import * 
    2832from ndg.security.common.authz.pdp import PDPInterface 
     
    5559         
    5660        if cfgFilePath: 
    57             self.readConfig(cfgFilePath) 
     61            self.readConfig() 
    5862             
    5963        # Any keywords set will override equivalent file property settings 
     
    6569                            paramName) 
    6670            setattr(self, paramName, expVars(prop['paramName'])) 
    67              
    68         paramFound = [param for paramName in PEP.defParam \ 
     71         
     72        # Make a copy of ref params deleting 'pdpModFilePath' as this isn't 
     73        # necessary for initialising a PDP object (the module can be on the 
     74        # existing class path) 
     75        param4PDPInit = PEP.defParam.copy() 
     76        param4PDPInit.pop('pdpModFilePath') 
     77          
     78        paramFound = [paramName for paramName in param4PDPInit \ 
    6979                      if getattr(self, paramName, None)] 
    70         if len(paramFound) == len(PEP.defParam): 
     80        if len(paramFound) == len(param4PDPInit): 
    7181            # Initialize if all required resource URI class properties are set 
    7282            self.initPDPInterface() 
     
    7787        """Set-up PDP interface to PEP""" 
    7888         
     89        sysPathBak = None # extra bullet proofing for finally block 
    7990        try: 
    8091            try: 
     92                sysPathBak = sys.path[:] 
     93                 
    8194                # Temporarily extend system path ready for import 
    82                 sysPathBak = sys.path[:] 
    8395                sys.path.append(self.pdpModFilePath) 
    8496                 
     
    96108        except KeyError, e: 
    97109            raise PDPInitError('Importing PDP module, key not recognised: %s'%\ 
    98                                e) 
    99                                  
     110                               e)                           
    100111        except Exception, e: 
    101112            raise PDPInitError('Importing PDP module: %s' % e) 
     
    103114 
    104115        # Check class inherits from PEPResrc abstract base class 
    105         if not issubclass(pdpClass, PEPResrc): 
     116        if not issubclass(pdpClass, PDPInterface): 
    106117            raise PDPInitError, \ 
    107                 "PDP interface class %s must be derived from PEPResrc" % \ 
     118                "PDP interface class %s must be derived from PDPInterface" % \ 
    108119                    self.pdpClassName 
    109120 
     
    113124            self._pdp = pdpClass(self.pdpCfgFilePath)             
    114125        except Exception, e: 
    115             raise PDPInitError("Error instantiating PDP interface: " + str(e)) 
     126            raise PDPInitError("Error instantiating PDP interface %s: %s" % \ 
     127                               (pdpClass, e)) 
    116128 
    117129 
     
    124136        # Copy directly into attribute of this object 
    125137        for paramName in PEP.defParam: 
    126             setattr(self, paramName, expVars(self._cfg(section, paramName))) 
     138            setattr(self, paramName, expVars(self._cfg.get(section,paramName))) 
    127139 
    128140    
     
    156168        The alias to this method 'accessPermitted'""" 
    157169         
     170        if self._pdp is None: 
     171            raise PDPInitError(\ 
     172            "PDP object is not set - ensure initPDPInterface has been called") 
     173             
    158174        return self._pdp.accessPermitted(resrcHandle,  
    159175                                         userHandle,  
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/wsSecurity.py

    r3768 r3790  
    242242        @type signedInfoC14nKw: dict 
    243243        ''' 
     244        log.debug("SignatureHandler.__init__ ...") 
    244245         
    245246        # WSSecurityConfig is the default class for reading config params but 
     
    252253        # Read parameters from config file if set 
    253254        if cfgFilePath: 
     255            log.debug("SignatureHandler.__init__: Processing config file...") 
    254256            self.cfg.read(cfgFilePath, section=cfgFileSection) 
    255257         
    256258        # Also update config from keywords set  
     259        log.debug("SignatureHandler.__init__: setting config from keywords...") 
    257260        self.cfg.update(kw) 
    258261         
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/wssecurity/__init__.py

    r3768 r3790  
    148148        badKeys = [i for i in seq if i not in WSSecurityConfig.defParam] 
    149149        if badKeys: 
    150             raise KeyError("Parameter keys '%s' not recognised" % badKeys) 
     150            raise KeyError("Parameter key(s) %s not recognised" % \ 
     151                           ','.join(badKeys)) 
    151152        return self._param.update(seq, *arg) 
    152153     
     
    154155        badKeys = [i for i in seq if i not in WSSecurityConfig.defParam] 
    155156        if badKeys: 
    156             raise KeyError("Parameter keys '%s' not recognised" % badKeys) 
     157            raise KeyError("Parameter key(s) %s not recognised" % \ 
     158                           ','.join(badKeys)) 
    157159        return self._param.fromkeys(*arg) 
    158160     
Note: See TracChangeset for help on using the changeset viewer.