Changeset 1724


Ignore:
Timestamp:
20/11/06 22:06:50 (13 years ago)
Author:
pjkersha
Message:

Setting up client, server and unit tests for Attribute Authority.

Location:
TI12-security/trunk/python
Files:
5 edited

Legend:

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

    r1713 r1724  
    2020version 1.0 or later. 
    2121""" 
     22from AttAuthority_services import AttAuthorityServiceLocator 
     23 
     24 
    2225#_____________________________________________________________________________ 
    2326class AttAuthorityClientError(Exception): 
    24     """Exception handling for SessionClient class""" 
     27    """Exception handling for AttribuSessionthorityClient class""" 
    2528    pass 
    2629 
     
    3134    #_________________________________________________________________________ 
    3235    def __init__(self,  
    33                  aaWSDL=None,  
     36                 wsdl=None,  
    3437                 aaPubKeyFilePath=None, 
    3538                 clntPubKeyFilePath=None, 
     
    3740                 traceFile=None): 
    3841        """ 
    39         aaWSDL:                  WSDL URI for Attribute Authority WS.  Setting  
     42        wsdl:                    WSDL URI for Attribute Authority WS.  Setting  
    4043                                 it will set the Service Proxy 
    41         aaPubKeyFilePath:     
    42                                  Public key of Attribute Authority used to  
     44        aaPubKeyFilePath:        Public key of Attribute Authority used to  
    4345                                 encrypt the outgoing message if required -  
    4446                                 set as a path on the local file system or as  
     
    5456                                 give extra WS debug information""" 
    5557 
    56         self.__aaSrv = None 
    57         self.__aaWSDL = None 
     58        self.__srv = None 
     59        self.__wsdl = None 
    5860        self.__aaPubKeyFilePath = None 
    5961        self.__aaPubKeyFilePath = None 
     
    6567         
    6668         
    67         if aaWSDL: 
    68             self.__setAAwsdl(aaWSDL) 
     69        if wsdl: 
     70            self.__setWSDL(wsdl) 
    6971             
    7072        if aaPubKeyFilePath: 
     
    8789          
    8890        # Instantiate Attribute Authority WS proxy 
    89         if self.__aaWSDL: 
    90             self.serviceProxy() 
    91          
    92  
    93     #_________________________________________________________________________ 
    94     def __setAAwsdl(self, aaWSDL): 
    95          
    96         if not isinstance(aaWSDL, basestring): 
     91        if self.__wsdl: 
     92            self.initService() 
     93         
     94 
     95    #_________________________________________________________________________ 
     96    def __setWSDL(self, wsdl): 
     97         
     98        if not isinstance(wsdl, basestring): 
    9799            raise AttAuthorityClientError, \ 
    98100                        "Attribute Authority WSDL URI must be a valid string" 
    99101         
    100         self.__aaWSDL = aaWSDL 
    101          
    102     aaWSDL = property(fset=__setAAwsdl,doc="Set Attribute Authority WSDL URI") 
     102        self.__wsdl = wsdl 
     103         
     104    wsdl = property(fset=__setWSDL,doc="Set Attribute Authority WSDL URI") 
    103105 
    104106 
     
    181183         
    182184    #_________________________________________________________________________ 
    183     def serviceProxy(self, aaWSDL=None): 
     185    def initService(self, wsdl=None): 
    184186        """Set the WS proxy for the Attribute Authority""" 
    185         if aaWSDL: 
    186             self.__setAAwsdl(aaWSDL) 
     187        if wsdl: 
     188            self.__setWSDL(wsdl) 
    187189 
    188190        try: 
    189             self.__aaSrv = ServiceProxy(self.__aaWSDL,  
    190                                         use_wsdl=True,  
    191                                         tracefile=self.__traceFile) 
     191            locator = AttAuthorityServiceLocator() 
     192            self.__srv = locator.getAttAuthority(self.__wsdl,  
     193                                                 tracefile=self.__traceFile) 
    192194        except HTTPResponse, e: 
    193195            raise AttAuthorityClientError, \ 
    194                 "Error initialising WSDL Service Proxy for \"%s\": %s %s" % \ 
    195                 (self.__aaWSDL, e.status, e.reason) 
    196              
    197         except Exception, e: 
    198             raise AttAuthorityClientError, \ 
    199                 "Initialising WSDL Service Proxy for \"%s\": %s" % \ 
    200                  (self.__aaWSDL, str(e)) 
     196            "Error initialising WSDL Service for \"%s\": %s %s" % \ 
     197                (self.__wsdl, e.status, e.reason) 
     198             
     199        except Exception, e: 
     200            raise AttAuthorityClientError, \ 
     201                "Initialising WSDL Service for \"%s\": %s" % \ 
     202                 (self.__wsdl, str(e)) 
    201203 
    202204                                     
     
    212214             
    213215        try:    
    214             hostInfoReq = aaIO.HostInfoReq(encrCert=self.__clntPubKey, 
    215                                 encrPubKeyFilePath=self.__aaPubKeyFilePath)  
    216  
    217             # Pass encrypted request 
    218             resp = self.__aaSrv.getHostInfo(hostInfoReq=hostInfoReq()) 
    219                          
    220             hostInfoResp = aaIO.HostInfoResp(\ 
    221                                 xmlTxt=resp['hostInfoResp'], 
    222                                 encrPriKeyFilePath=self.__clntPriKeyFilePath, 
    223                                 encrPriKeyPwd=clntPriKeyPwd)             
     216            resp = self.__srv.getHostInfo() 
     217 
    224218        except Exception, e: 
    225219            raise AttAuthorityClientError, "Error: " + str(e) 
    226    
    227                              
    228         if 'errMsg' in hostInfoResp and hostInfoResp['errMsg']: 
    229             raise AttAuthorityClientError, hostInfoResp['errMsg'] 
    230  
    231         return hostInfoResp['thisHost'] 
     220 
     221        return resp 
    232222 
    233223                                     
     
    242232             
    243233        try:    
    244             trustedHostInfoReq = aaIO.TrustedHostInfoReq(role=role,  
    245                                 encrCert=self.__clntPubKey, 
    246                                 encrPubKeyFilePath=self.__aaPubKeyFilePath)  
    247  
    248234            # Pass encrypted request 
    249             resp = self.__aaSrv.getTrustedHostInfo(\ 
    250                                     trustedHostInfoReq=trustedHostInfoReq()) 
    251                          
    252             trustedHostInfoResp = aaIO.TrustedHostInfoResp(\ 
    253                                 xmlTxt=resp['trustedHostInfoResp'], 
    254                                 encrPriKeyFilePath=self.__clntPriKeyFilePath, 
    255                                 encrPriKeyPwd=clntPriKeyPwd)             
     235            resp = self.__srv.getTrustedHostInfo(role) 
     236 
    256237        except Exception, e: 
    257238            raise AttAuthorityClientError, "Error: " + str(e) 
    258    
    259                              
    260         if 'errMsg' in trustedHostInfoResp and trustedHostInfoResp['errMsg']: 
    261             raise AttAuthorityClientError, trustedHostInfoResp['errMsg'] 
    262  
    263         return trustedHostInfoResp['trustedHosts'] 
     239 
     240        return resp 
    264241     
    265242 
    266243    #_________________________________________________________________________ 
    267     def reqAuthorisation(self,  
    268                          proxyCert,  
    269                          userAttCert=None,  
    270                          clntPriKeyPwd=None): 
    271         """Request authorisation from NDG Attribute Authority Web Service.""" 
     244    def getAttCert(self,  
     245                   proxyCert,  
     246                   userAttCert=None,  
     247                   clntPriKeyPwd=None): 
     248        """Request attribute certificate from NDG Attribute Authority Web  
     249        Service.""" 
    272250 
    273251 
     
    277255 
    278256        try:    
    279             authzReq = aaIO.AuthorisationReq(proxyCert=proxyCert, 
    280                                  userAttCert=userAttCert, 
    281                                  encrCert=self.__clntPubKey, 
    282                                  encrPubKeyFilePath=self.__aaPubKeyFilePath)  
    283  
    284             resp = self.__aaSrv.reqAuthorisation(authorisationReq=authzReq()) 
     257            resp = self.__srv.getAttCert(proxyCert) 
    285258                                       
    286             authzResp=aaIO.AuthorisationResp(xmlTxt=resp['authorisationResp'], 
    287                                 encrPriKeyFilePath=self.__clntPriKeyFilePath, 
    288                                 encrPriKeyPwd=clntPriKeyPwd)            
    289259        except Exception, e: 
    290260            raise AttAuthorityClientError, "Error: " + str(e) 
    291261             
    292         if authzResp['statCode'] == authzResp.accessError: 
    293             raise AttAuthorityClientError, authzResp['errMsg'] 
    294          
    295         return authzResp 
     262        if resp['statCode'] == resp.accessError: 
     263            raise AttAuthorityClientError, resp['errMsg'] 
     264         
     265        return resp 
    296266 
    297267                                     
    298268    #_________________________________________________________________________ 
    299269    def getPubKey(self): 
    300         """Retrieve the public key of the Session Manager""" 
    301          
    302         try:    
    303             pubKeyReq = aaIO.PubKeyReq()  
    304  
    305             # Pass request 
    306             resp = self.__aaSrv.getPubKey(pubKeyReq=pubKeyReq()) 
    307                          
    308             pubKeyResp = aaIO.PubKeyResp(xmlTxt=resp['pubKeyResp']) 
    309                              
    310             if 'errMsg' in pubKeyResp and pubKeyResp['errMsg']: 
    311                 raise AttAuthorityClientError(pubKeyResp['errMsg']) 
    312              
    313             return pubKeyResp['pubKey'] 
     270        """Retrieve the public key of the Attribute Authority""" 
     271         
     272        try:    
     273            pubKey = self.__srv.getPubKey()                 
     274            return pubKey 
    314275         
    315276        except Exception, e: 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/AttAuthority/AttAuthority_services_server.py

    r1708 r1724  
    200200        if hasattr(self,'impl'): 
    201201            result._attCert = parameters 
    202         return result 
     202        return self.request, result 
    203203 
    204204    soapAction['getAttCert'] = 'soap_getAttCert' 
     
    213213 
    214214        result = getHostInfoOutputMsg() 
    215         return result 
     215        return self.request, result 
    216216 
    217217    soapAction['getHostInfo'] = 'soap_getHostInfo' 
     
    230230        if hasattr(self,'impl'): 
    231231            result._trustedHosts = parameters 
    232         return result 
     232        return self.request, result 
    233233 
    234234    soapAction['getTrustedHostInfo'] = 'soap_getTrustedHostInfo' 
     
    246246        if hasattr(self,'impl'): 
    247247            result._x509Cert = parameters 
    248         return result 
     248        return self.request, result 
    249249 
    250250    soapAction['getPubKey'] = 'soap_getPubKey' 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/AttAuthority/README

    r1714 r1724  
    44$ wsdl2dispatch -e -f ~/security/python/www/html/attAuthority.wsdl 
    55 
     6AttAuthorityService soap_* methods modified to return request 
     7and result to fit with interface to Twisted. 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/AttAuthority/server-config.tac

    r1714 r1724  
    1 # example.tac 
    2 from AttAuthority_services_server import AttAuthorityService 
     1#!/usr/bin/env python 
     2"""NDG Security Attribute Authority .tac file  
     3 
     4This file enables the Attribute Authority web service to be  
     5called under the Twisted framework 
     6 
     7NERC Data Grid Project 
     8 
     9P J Kershaw 17/11/06 
     10 
     11Copyright (C) 2006 CCLRC & NERC 
     12 
     13This software may be distributed under the terms of the Q Public License, 
     14version 1.0 or later. 
     15""" 
     16#from AttAuthority_services_server import AttAuthorityService 
     17import AttAuthority_services_server as AttAuthorityServiceBase 
    318from ZSI.twisted.WSresource import WSResource 
    419from twisted.application import service, internet 
     
    722import socket 
    823 
    9 class AttAuthorityImpl(AttAuthorityService, WSResource): 
     24class AttAuthority(AttAuthorityServiceBase, WSResource): 
    1025     def __init__(self): 
    1126         WSResource.__init__(self) 
    1227 
    1328     def soap_getAttCert(self, ps, **kw): 
    14          print 'soap_getAttCert' 
    1529         #import pdb;pdb.set_trace() 
    1630         request, response = AttAuthorityService.soap_getAttCert(self, ps) 
    1731         response._attCert = 'ATTRIBUTE CERT' 
     32         return request, response 
     33 
     34     def soap_getHostInfo(self, ps, **kw): 
     35         #import pdb;pdb.set_trace() 
     36         request, response = AttAuthorityService.soap_getHostInfo(self, ps) 
     37         response._hostInfo = 'HOST INFO' 
     38         return request, response 
     39 
     40     def soap_getTrustedHostInfo(self, ps, **kw): 
     41         #import pdb;pdb.set_trace() 
     42         request, response = \ 
     43                AttAuthorityService.soap_getTrustedHostInfo(self, ps) 
     44         response._trustedHostInfo = 'TRUSTED HOST INFO' 
     45         return request, response 
     46 
     47     def soap_getPubKey(self, ps, **kw): 
     48         #import pdb;pdb.set_trace() 
     49         request, response = AttAuthorityService.soap_getPubKey(self, ps) 
     50         response._pubKey = 'PUB KEY' 
    1851         return request, response 
    1952 
     
    2255 
    2356root = Resource() 
    24 root.putChild('AttributeAuthority',  AttAuthorityImpl()) 
     57root.putChild('AttributeAuthority', AttAuthority()) 
    2558siteFactory = Site(root) 
    2659application = service.Application("WSRF-Container") 
  • TI12-security/trunk/python/ndg.security.test/ndg/security/test/AttAuthority/AttAuthorityClientTest.py

    r1720 r1724  
    138138if __name__ == "__main__": 
    139139    unittest.main() 
     140 
     141from AttAuthority_services import AttAuthorityServiceLocator 
     142 
     143def main(**kw): 
     144    locator = AttAuthorityServiceLocator() 
     145    port = locator.getAttAuthority(**kw) 
     146    import pdb;pdb.set_trace() 
     147    attCert = port.getAttCert("USER CERT") 
     148    print "attCert = %s" % attCert 
     149     
     150    # Factory METHOD Just guessing here 
     151    #response = port.create(CLIENT.CreateRequest()) 
     152    #kw['endPointReference'] = response._EndpointReference 
     153    #iport = locator.getAttAuthority(**kw) 
     154#    reactor.stop() 
     155 
     156 
     157if __name__ == '__main__': 
     158    main(url="http://127.0.0.1:5700/AttributeAuthority") 
     159#    op = GetBasicOptParser() 
Note: See TracChangeset for help on using the changeset viewer.