Ignore:
Timestamp:
11/01/07 09:25:10 (13 years ago)
Author:
pjkersha
Message:

python/ndg.security.server/ndg/security/server/AttAuthority/server-config.tac:
started integration with AttAuthority? class and getAttCert method.

python/ndg.security.server/ndg/security/server/AttAuthority/init.py:

  • Update documentation
  • make properties file path default to $NDG_DIR/conf/attAuthorityProperties.xml
  • Remove refs to AttAuthorityIO class - remove reqKeys in methods and use explicit keywords

python/ndg.security.common/ndg/security/common/SessionMgr/init.py:
SessionMgr? client interface - cosmetic changes to method names

python/ndg.security.common/ndg/security/common/X509.py: fix to exception
handlers - they only need to inherit from Exception, no further specialisation
is required.

python/ndg.security.common/ndg/security/common/AttAuthority/init.py:
Preparing for unit tests and integration of AttAuthority? class with web service
server side code. Added clntPriKeyPwd property and associated set method; changes to method names.

File:
1 edited

Legend:

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

    r1771 r1990  
    1313NERC Data Grid Project 
    1414 
    15 P J Kershaw 17/11/06 
    16  
    17 Copyright (C) 2006 CCLRC & NERC 
    18  
    19 This software may be distributed under the terms of the Q Public License, 
    20 version 1.0 or later. 
     15@author P J Kershaw 17/11/06 
     16 
     17@copyright (C) 2006 CCLRC & NERC 
     18 
     19@license This software may be distributed under the terms of the Q Public  
     20License, version 1.0 or later. 
    2121""" 
    2222__all__ = [ 
     
    2929 
    3030from AttAuthority_services import AttAuthorityServiceLocator 
     31from ndg.security.common.wsSecurity import SignatureHandler 
    3132 
    3233 
    3334#_____________________________________________________________________________ 
    3435class AttAuthorityClientError(Exception): 
    35     """Exception handling for AttribuSessionthorityClient class""" 
     36    """Exception handling for AttributeAuthorityClient class""" 
    3637    pass 
    3738 
     
    3940#_____________________________________________________________________________ 
    4041class AttAuthorityClient(object): 
     42    """Client interface to Attribute Authority web service""" 
    4143     
    4244    #_________________________________________________________________________ 
    4345    def __init__(self,  
    4446                 uri=None,  
    45                  aaCertFilePath=None, 
     47                 srvCertFilePath=None, 
    4648                 clntCertFilePath=None, 
    4749                 clntPriKeyFilePath=None, 
    4850                 tracefile=None): 
    4951        """ 
    50         uri:                    WSDL URI for Attribute Authority WS.  Setting  
    51                                  it will set the Service Proxy 
    52         aaCertFilePath:        Public key of Attribute Authority used to  
    53                                  encrypt the outgoing message if required -  
    54                                  set as a path on the local file system or as  
    55                                  a URI 
    56         clntCertFilePath:      Public key of client.  This is passed to the 
    57                                  Attribute Authority so that it can encrypt 
    58                                  responses.  WARNING: if not set, responses 
    59                                  are returned as clear text 
     52        @type uri: string 
     53        @param uri: URI for Attribute Authority WS.  Setting it will also 
     54        initialise the Service Proxy 
     55         
     56        @type srvCertFilePath: string 
     57        @param srvCertFilePath: X.509 certificate of Attribute Authority use to  
     58        verify the signatures of responses. This is unnecessary if the  
     59        response includes the certificate. 
     60         
     61        @type clntCertFilePath:string 
     62        @param clntCertFilePath: X.509 certificate of client.  Passed in  
     63        SOAP WS-Security header to enable the AA to verify the signature of 
     64        this client's requests. 
     65         
    6066        clntPriKeyFilePath:      Private key of client.  If clntCertFilePath 
    6167                                 is set, the private key is needed to decrypt  
     
    6672        self.__srv = None 
    6773        self.__uri = None 
    68         self.__aaCertFilePath = None 
    69         self.__aaCertFilePath = None 
     74        self.__srvCertFilePath = None 
     75        self.__srvCertFilePath = None 
    7076        self.__clntCertFilePath = None 
    7177        self.__clntCert = None 
    7278        self.__clntPriKeyFilePath = None 
    73          
    74         self.__aaCertTempFile = None 
     79        self.__clntPriKeyPwd = None 
     80        self.__srvCertTempFile = None 
    7581         
    7682         
     
    7884            self.__setURI(uri) 
    7985             
    80         if aaCertFilePath: 
    81             self.__setAAcertFilePath(aaCertFilePath) 
     86        if srvCertFilePath: 
     87            self.__setSrvCertFilePath(srvCertFilePath) 
    8288             
    8389        if clntPriKeyFilePath: 
     
    114120 
    115121    #_________________________________________________________________________ 
    116     def __setAAcertFilePath(self, aaCertFilePath): 
    117          
    118         if not isinstance(aaCertFilePath, basestring): 
     122    def __setSrvCertFilePath(self, srvCertFilePath): 
     123         
     124        if not isinstance(srvCertFilePath, basestring): 
    119125            raise AttAuthorityClientError, \ 
    120126                "Attribute Authority public key URI must be a valid string" 
    121127         
    122         self.__aaCertFilePath = aaCertFilePath 
    123          
    124     aaCertFilePath = property(fset=__setAAcertFilePath, 
    125                                 doc="Set Attribute Authority public key URI") 
     128        self.__srvCertFilePath = srvCertFilePath 
     129         
     130    srvCertFilePath = property(fset=__setSrvCertFilePath, 
     131                              doc="Set Attribute Authority public key URI") 
    126132 
    127133  
     
    130136         
    131137        if not isinstance(clntCertFilePath, basestring): 
    132             raise AttAuthorityClientError(\ 
    133                 "Client public key file path must be a valid string") 
     138            raise AttAuthorityClientError, \ 
     139                "Client public key file path must be a valid string" 
    134140         
    135141        self.__clntCertFilePath = clntCertFilePath 
     142         
    136143        try: 
    137144            self.__clntCert = open(self.__clntCertFilePath).read() 
    138145             
    139146        except IOError, (errNo, errMsg): 
    140             raise AttAuthorityClientError(\ 
     147            raise AttAuthorityClientError, \ 
    141148                    "Reading certificate file \"%s\": %s" % \ 
    142                     (self.__clntCertFilePath, errMsg)) 
     149                    (self.__clntCertFilePath, errMsg) 
    143150                                
    144151        except Exception, e: 
     
    148155         
    149156    clntCertFilePath = property(fset=__setClntCertFilePath, 
    150                                   doc="File path for client public key") 
     157                                doc="File path for client public key") 
    151158 
    152159  
     
    163170                                  doc="File path for client private key") 
    164171 
    165  
    166     #_________________________________________________________________________ 
    167     def __getAttAuthorityCert(self): 
     172  
     173    #_________________________________________________________________________ 
     174    def __setClntPriKeyPwd(self, clntPriKeyPwd): 
     175         
     176        if not isinstance(clntPriKeyPwd, basestring): 
     177            raise SessionMgrClientError, \ 
     178                        "Client private key password must be a valid string" 
     179         
     180        self.__clntPriKeyPwd = clntPriKeyPwd 
     181         
     182    clntPriKeyPwd = property(fset=__setClntPriKeyPwd, 
     183                         doc="Password protecting client private key file") 
     184 
     185    #_________________________________________________________________________ 
     186    def __getSrvCert(self): 
    168187        """Retrieve the public key from the URI""" 
    169188         
    170189        # Don't proceed unless URI was set - user may have set public key via 
    171         # aaCertFilePath instead 
    172         if self.__aaCertFilePath is not None: 
     190        # srvCertFilePath instead 
     191        if self.__srvCertFilePath is not None: 
    173192            return 
    174193                 
    175194        try: 
    176             self.__aaCertTempFile = tempfile.NamedTemporaryFile() 
    177              
    178             cert = self.getCert() 
    179             open(self.__aaCertTempFile.name, "w").write(cert) 
    180              
    181             self.__aaCertFilePath = self.__aaCertTempFile.name 
     195            self.__srvCertTempFile = tempfile.NamedTemporaryFile() 
     196             
     197            cert = self.getX509Cert() 
     198            open(self.__srvCertTempFile.name, "w").write(cert) 
     199             
     200            self.__srvCertFilePath = self.__srvCertTempFile.name 
    182201             
    183202        except IOError, (errNo, errMsg): 
    184203            raise AttAuthorityClientError, \ 
    185204                                "Writing public key to temp \"%s\": %s" % \ 
    186                                 (self.__aaCertTempFile.name, errMsg)                                                                       
     205                                (self.__srvCertTempFile.name, errMsg)                                                                       
    187206        except Exception, e: 
    188207            raise AttAuthorityClientError, "Retrieving Attribute Authority "+\ 
     
    195214        if uri: 
    196215            self.__setURI(uri) 
     216 
     217        # WS-Security Signature handler object is passed to binding 
     218        signatureHandler = SignatureHandler(\ 
     219                                    certFilePath=self.__smCertFilePath, 
     220                                    priKeyFilePath=self.__clntPriKeyFilePath, 
     221                                    priKeyPwd=self.__clntPriKeyPwd) 
    197222 
    198223        try: 
     
    202227        except HTTPResponse, e: 
    203228            raise AttAuthorityClientError, \ 
    204             "Error initialising WSDL Service for \"%s\": %s %s" % \ 
     229                "Error initialising WSDL Service for \"%s\": %s %s" % \ 
    205230                (self.__uri, e.status, e.reason) 
    206231             
     
    219244 
    220245        # If Public key was not set, retrieve from server 
    221         self.__getAttAuthorityCert() 
     246        self.__getSrvX509Cert() 
    222247             
    223248        try:    
     
    237262 
    238263        # If Public key was not set, retrieve from server 
    239         self.__getAttAuthorityCert() 
     264        self.__getSrvX509Cert() 
    240265             
    241266        try:    
     
    259284 
    260285        # If Public key was not set, retrieve from server 
    261         self.__getAttAuthorityCert() 
     286        self.__getSrvX509Cert() 
    262287 
    263288 
     
    272297                                     
    273298    #_________________________________________________________________________ 
    274     def getCert(self): 
     299    def getX509Cert(self): 
    275300        """Retrieve the public key of the Attribute Authority""" 
    276301         
    277302        try:    
    278             cert = self.__srv.getCert()                 
     303            cert = self.__srv.getX509Cert()                 
    279304            return cert 
    280305         
Note: See TracChangeset for help on using the changeset viewer.