Changeset 1708


Ignore:
Timestamp:
16/11/06 18:57:01 (13 years ago)
Author:
pjkersha
Message:

Moved wsdl2dispatch generated attAuthority_services_server.py to new location
for server package.

File:
1 moved

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/AttAuthority/AttAuthority_services_server.py

    r1642 r1708  
    1 """NDG Attribute Authority Web service server side interface.  Generated and  
    2 adapted from: 
    3  
    4 wsdl2dispatch -f attAuthority.wsdl 
    5  
    6 NERC Data Grid Project 
    7  
    8 P J Kershaw 19/01/06 
    9  
    10 Copyright (C) 2006 CCLRC & NERC 
    11  
    12 This software may be distributed under the terms of the Q Public License, 
    13 version 1.0 or later. 
    14 """ 
    15  
    16 reposID = '$Id$' 
    17  
    18 from attAuthority_services import * 
     1################################################## 
     2# AttAuthority_services_server.py 
     3#      Generated by ZSI.generate.wsdl2dispatch.DelAuthServiceModuleWriter 
     4# 
     5################################################## 
     6 
     7from AttAuthority_services import * 
    198from ZSI.ServiceContainer import ServiceSOAPBinding 
    209 
    21 from AttAuthority import * 
    22  
    23 # Create custom XML formatted error response where needed 
    24 from AttAuthorityIO import * 
    25  
    26  
    27 class attAuthority(ServiceSOAPBinding): 
    28     soapAction = { 
    29         'urn:attAuthority#getHostInfo': 'soap_getHostInfo', 
    30         'urn:attAuthority#getTrustedHostInfo': 'soap_getTrustedHostInfo', 
    31         'urn:attAuthority#reqAuthorisation': 'soap_reqAuthorisation', 
    32         'urn:attAuthority#getPubKey': 'soap_getPubKey', 
    33         } 
    34  
    35     def __init__(self, srv, debug=False, post='/attAuthority.wsdl', **kw): 
    36          
     10class AttAuthorityService(ServiceSOAPBinding): 
     11    soapAction = {} 
     12    root = {} 
     13    _wsdl = """<?xml version=\"1.0\" ?> 
     14<wsdl:definitions name=\"AttAuthority\" targetNamespace=\"urn:ndg:security\" xmlns=\"http://schemas.xmlsoap.org/wsdl/\" xmlns:http=\"http://schemas.xmlsoap.org/wsdl/http/\" xmlns:soap=\"http://schemas.xmlsoap.org/wsdl/soap/\" xmlns:soapenc=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:tns=\"urn:ndg:security\" xmlns:wsdl=\"http://schemas.xmlsoap.org/wsdl/\" xmlns:wsu=\"http://schemas.xmlsoap.org/ws/2002/07/utility\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\"> 
     15 
     16  <wsdl:types> 
     17    <xsd:schema> 
     18      <xsd:element name=\"getAttCert\"> 
     19        <xsd:complexType> 
     20          <xsd:sequence> 
     21            <xsd:element name=\"userCert\" type=\"xsd:string\"/> 
     22          </xsd:sequence> 
     23        </xsd:complexType> 
     24      </xsd:element> 
     25      <xsd:element name=\"getAttCertResponse\"> 
     26        <xsd:complexType> 
     27          <xsd:sequence> 
     28            <xsd:element name=\"attCert\" type=\"xsd:string\"/> 
     29          </xsd:sequence> 
     30        </xsd:complexType> 
     31      </xsd:element> 
     32 
     33      <xsd:element name=\"getHostInfo\"> 
     34        <xsd:complexType/> 
     35      </xsd:element> 
     36 
     37      <xsd:element name=\"getHostInfoResponse\"> 
     38        <xsd:complexType/> 
     39      </xsd:element> 
     40 
     41      <xsd:element name=\"getTrustedHostInfo\"> 
     42        <xsd:complexType> 
     43          <xsd:sequence> 
     44            <xsd:element name=\"role\" type=\"xsd:string\"/> 
     45          </xsd:sequence> 
     46        </xsd:complexType> 
     47      </xsd:element> 
     48      <xsd:element name=\"getTrustedHostInfoResponse\"> 
     49        <xsd:complexType> 
     50          <xsd:sequence> 
     51            <xsd:element name=\"trustedHosts\" type=\"xsd:string\"/> 
     52          </xsd:sequence> 
     53        </xsd:complexType> 
     54      </xsd:element> 
     55 
     56      <xsd:element name=\"getPubKey\"> 
     57        <xsd:complexType/> 
     58      </xsd:element> 
     59      <xsd:element name=\"getPubKeyResponse\"> 
     60        <xsd:complexType> 
     61          <xsd:sequence> 
     62            <xsd:element name=\"x509Cert\" type=\"xsd:string\"/> 
     63          </xsd:sequence> 
     64        </xsd:complexType> 
     65      </xsd:element> 
     66 
     67    </xsd:schema> 
     68  </wsdl:types> 
     69  
     70  <message name=\"getAttCertInputMsg\"> 
     71    <part element=\"tns:getAttCert\" name=\"parameters\"/> 
     72  </message> 
     73 
     74  <message name=\"getAttCertOutputMsg\"> 
     75    <part element=\"tns:getAttCertResponse\" name=\"parameters\"/> 
     76  </message> 
     77   
     78  <message name=\"getHostInfoInputMsg\"> 
     79    <part element=\"tns:getHostInfo\" name=\"parameters\"/> 
     80  </message> 
     81 
     82  <message name=\"getHostInfoOutputMsg\"> 
     83    <part element=\"tns:getHostInfoResponse\" name=\"parameters\"/> 
     84  </message> 
     85 
     86  <message name=\"getTrustedHostInfoInputMsg\"> 
     87    <part element=\"tns:getTrustedHostInfo\" name=\"parameters\"/> 
     88  </message> 
     89 
     90  <message name=\"getTrustedHostInfoOutputMsg\"> 
     91    <part element=\"tns:getTrustedHostInfoResponse\" name=\"parameters\"/> 
     92  </message> 
     93 
     94  <message name=\"getPubKeyInputMsg\"> 
     95    <part element=\"tns:getPubKey\" name=\"parameters\"/> 
     96  </message> 
     97 
     98  <message name=\"getPubKeyOutputMsg\"> 
     99    <part element=\"tns:getPubKeyResponse\" name=\"parameters\"/> 
     100  </message> 
     101 
     102  <wsdl:portType name=\"AttAuthority\"> 
     103    <wsdl:operation name=\"getAttCert\"> 
     104      <wsdl:input message=\"tns:getAttCertInputMsg\"/> 
     105      <wsdl:output message=\"tns:getAttCertOutputMsg\"/> 
     106    </wsdl:operation> 
     107 
     108    <operation name=\"getHostInfo\"> 
     109      <wsdl:input message=\"tns:getHostInfoInputMsg\"/> 
     110      <output message=\"tns:getHostInfoOutputMsg\"/> 
     111    </operation> 
     112 
     113    <operation name=\"getTrustedHostInfo\"> 
     114      <wsdl:input message=\"tns:getTrustedHostInfoInputMsg\"/> 
     115      <output message=\"tns:getTrustedHostInfoOutputMsg\"/> 
     116    </operation> 
     117 
     118    <operation name=\"getPubKey\"> 
     119      <wsdl:input message=\"tns:getPubKeyInputMsg\"/> 
     120      <output message=\"tns:getPubKeyOutputMsg\"/> 
     121    </operation> 
     122  </wsdl:portType> 
     123 
     124  <wsdl:binding name=\"AttAuthorityBinding\" type=\"tns:AttAuthority\"> 
     125    <soap:binding style=\"document\" transport=\"http://schemas.xmlsoap.org/soap/http\"/> 
     126      
     127    <wsdl:operation name=\"getAttCert\"> 
     128      <soap:operation soapAction=\"getAttCert\"/> 
     129      <wsdl:input> 
     130        <soap:body use=\"literal\"/> 
     131      </wsdl:input> 
     132      <wsdl:output> 
     133        <soap:body use=\"literal\"/> 
     134      </wsdl:output> 
     135    </wsdl:operation> 
     136 
     137    <operation name=\"getHostInfo\"> 
     138      <soap:operation soapAction=\"getHostInfo\"/> 
     139      <wsdl:input> 
     140        <soap:body use=\"literal\"/> 
     141      </wsdl:input> 
     142      <wsdl:output> 
     143        <soap:body use=\"literal\"/> 
     144      </wsdl:output>  
     145    </operation> 
     146 
     147    <operation name=\"getTrustedHostInfo\"> 
     148      <soap:operation soapAction=\"getTrustedHostInfo\"/> 
     149      <wsdl:input> 
     150        <soap:body use=\"literal\"/> 
     151      </wsdl:input> 
     152      <wsdl:output> 
     153        <soap:body use=\"literal\"/> 
     154      </wsdl:output>  
     155    </operation> 
     156 
     157    <operation name=\"getPubKey\"> 
     158      <soap:operation soapAction=\"getPubKey\"/> 
     159      <wsdl:input> 
     160        <soap:body use=\"literal\"/> 
     161      </wsdl:input> 
     162      <wsdl:output> 
     163        <soap:body use=\"literal\"/> 
     164      </wsdl:output>  
     165    </operation>     
     166   
     167  </wsdl:binding> 
     168 
     169  <wsdl:service name=\"AttAuthorityService\"> 
     170    <wsdl:documentation>NERC Data Grid Attribute Authority web service</wsdl:documentation> 
     171    <wsdl:port binding=\"tns:AttAuthorityBinding\" name=\"SimpleCA\"> 
     172      <soap:address location=\"http://localhost:5700\"/> 
     173    </wsdl:port> 
     174  </wsdl:service> 
     175</wsdl:definitions>""" 
     176 
     177    def __init__(self, post='', **kw): 
    37178        ServiceSOAPBinding.__init__(self, post) 
    38  
    39         # Link WS to underlying attribute authority class instance 
    40         if not isinstance(srv, AttAuthority): 
    41             AttAuthorityError("Expecting AttAuthority type") 
    42              
    43         self.__srv = srv 
    44          
    45         self.__debug = debug 
    46          
    47  
    48     #_________________________________________________________________________ 
     179        if kw.has_key('impl'): 
     180            self.impl = kw['impl'] 
     181        self.auth_method_name = None 
     182        if kw.has_key('auth_method_name'): 
     183            self.auth_method_name = kw['auth_method_name'] 
     184    def authorize(self, auth_info, post, action): 
     185        if self.auth_method_name and hasattr(self.impl, self.auth_method_name): 
     186            return getattr(self.impl, self.auth_method_name)(auth_info, post, action) 
     187        else: 
     188            return 1 
     189 
     190    def soap_getAttCert(self, ps): 
     191        self.request = ps.Parse(getAttCertInputMsg.typecode) 
     192        parameters = self.request._userCert 
     193 
     194        # If we have an implementation object use it 
     195        if hasattr(self,'impl'): 
     196            parameters = self.impl.getAttCert(parameters) 
     197 
     198        result = getAttCertOutputMsg() 
     199        # If we have an implementation object, copy the result  
     200        if hasattr(self,'impl'): 
     201            result._attCert = parameters 
     202        return result 
     203 
     204    soapAction['getAttCert'] = 'soap_getAttCert' 
     205    root[(getAttCertInputMsg.typecode.nspname,getAttCertInputMsg.typecode.pname)] = 'soap_getAttCert' 
     206 
    49207    def soap_getHostInfo(self, ps): 
    50         
    51         if self.__debug: 
    52             import pdb 
    53             pdb.set_trace() 
    54          
    55         # input vals in request object 
    56         reqArgs = ps.Parse(hostInfoRequestWrapper) 
    57         reqTxt = str(reqArgs._hostInfoReq) 
    58          
    59         # assign return values to response object 
    60         resp = hostInfoResponseWrapper() 
    61          
    62          
    63         try: 
    64             # Decrypt and parse input 
    65             reqKeys = HostInfoReq(xmlTxt=reqTxt, 
    66                                   encrPriKeyFilePath=self.__srv['keyFile'], 
    67                                   encrPriKeyPwd=self.__srv['keyPwd']) 
    68                       
    69             hostInfoResp = HostInfoResp(thisHost=self.__srv.hostInfo)  
    70                                           
    71         except Exception, e: 
    72             hostInfoResp = HostInfoResp(errMsg=str(e)) 
    73              
    74              
    75         try: 
    76             # Encrypt response and convert into XML formatted string 
    77             if 'encrCert' in reqKeys: 
    78                  
    79                 # ConnectResp class expects the public key to be in a file 
    80                 # - Copy public key string content into a temporary file 
    81                 encrCertTmpFile = tempfile.NamedTemporaryFile()                     
    82                 open(encrCertTmpFile.name, "w").write(reqKeys['encrCert']) 
    83      
    84                 hostInfoResp.encrypt(encrPubKeyFilePath=encrCertTmpFile.name) 
    85                  
    86         except Exception, e: 
    87             hostInfoResp = HostInfoResp(statCode=hostInfoResp.accessError, 
    88                                         errMsg=str(e)) 
    89  
    90          
    91         # Convert response into encrypted XML formatted string     
    92         resp._hostInfoResp = hostInfoResp() 
    93         return resp 
    94          
    95  
    96     #_________________________________________________________________________ 
     208        self.request = ps.Parse(getHostInfoInputMsg.typecode) 
     209 
     210        # If we have an implementation object use it 
     211        if hasattr(self,'impl'): 
     212            parameters = self.impl.getHostInfo() 
     213 
     214        result = getHostInfoOutputMsg() 
     215        return result 
     216 
     217    soapAction['getHostInfo'] = 'soap_getHostInfo' 
     218    root[(getHostInfoInputMsg.typecode.nspname,getHostInfoInputMsg.typecode.pname)] = 'soap_getHostInfo' 
     219 
    97220    def soap_getTrustedHostInfo(self, ps): 
    98         
    99         if self.__debug: 
    100             import pdb 
    101             pdb.set_trace() 
    102          
    103         # input vals in request object 
    104         reqArgs = ps.Parse(trustedHostInfoRequestWrapper) 
    105         reqTxt = str(reqArgs._trustedHostInfoReq) 
    106          
    107         # assign return values to response object 
    108         resp = trustedHostInfoResponseWrapper() 
    109          
    110          
    111         try: 
    112             # Decrypt and parse input 
    113             reqKeys = TrustedHostInfoReq(xmlTxt=reqTxt, 
    114                                      encrPriKeyFilePath=self.__srv['keyFile'], 
    115                                      encrPriKeyPwd=self.__srv['keyPwd']) 
    116             if 'role' in reqKeys: 
    117                 role = reqKeys['role'] 
    118             else: 
    119                 role = None 
    120                       
    121             trustedHosts = self.__srv.getTrustedHostInfo(role=role) 
    122             trustedHostInfoResp = TrustedHostInfoResp(\ 
    123                                                    trustedHosts=trustedHosts)                                          
    124         except Exception, e: 
    125             trustedHostInfoResp = TrustedHostInfoResp(errMsg=str(e)) 
    126              
    127              
    128         try: 
    129             # Encrypt response and convert into XML formatted string 
    130             if 'encrCert' in reqKeys: 
    131                  
    132                 # ConnectResp class expects the public key to be in a file 
    133                 # - Copy public key string content into a temporary file 
    134                 encrCertTmpFile = tempfile.NamedTemporaryFile()                     
    135                 open(encrCertTmpFile.name, "w").write(reqKeys['encrCert']) 
    136      
    137                 trustedHostInfoResp.encrypt(\ 
    138                                     encrPubKeyFilePath=encrCertTmpFile.name) 
    139                  
    140         except Exception, e: 
    141             trustedHostInfoResp = TrustedHostInfoResp(\ 
    142                                   statCode=TrustedHostInfoResp.accessError, 
    143                                   errMsg=str(e)) 
    144  
    145          
    146         # Convert response into encrypted XML formatted string     
    147         resp._trustedHostInfoResp = trustedHostInfoResp() 
    148         return resp 
    149  
    150  
    151     #_________________________________________________________________________ 
    152     def soap_reqAuthorisation(self, ps): 
    153  
    154         if self.__debug: 
    155             import pdb 
    156             pdb.set_trace() 
    157          
    158         # input vals in request object 
    159         reqArgs = ps.Parse(authorisationRequestWrapper) 
    160         reqTxt = str(reqArgs._authorisationReq) 
    161  
    162         # assign return values to response object 
    163         resp = authorisationResponseWrapper() 
    164          
    165                  
    166         try: 
    167             # Decrypt and parse input 
    168             reqKeys = AuthorisationReq(xmlTxt=reqTxt, 
    169                                      encrPriKeyFilePath=self.__srv['keyFile'], 
    170                                      encrPriKeyPwd=self.__srv['keyPwd']) 
    171  
    172             # Make request to local instance 
    173             attCert = self.__srv.authorise(**reqKeys.xmlTags) 
    174              
    175             authResp = AuthorisationResp(\ 
    176                                     credential=attCert, 
    177                                     statCode=AuthorisationResp.accessGranted) 
    178              
    179         except AttAuthorityAccessDenied, e: 
    180             authResp = AuthorisationResp(errMsg=str(e), 
    181                                     statCode=AuthorisationResp.accessDenied) 
    182              
    183         except Exception, e: 
    184             authResp = AuthorisationResp(errMsg=str(e), 
    185                                     statCode=AuthorisationResp.accessError) 
    186  
    187  
    188         try: 
    189             # Encrypt response and convert into XML formatted string 
    190             if 'encrCert' in reqKeys: 
    191                  
    192                 # ConnectResp class expects the public key to be in a file 
    193                 # - Copy public key string content into a temporary file 
    194                 encrCertTmpFile = tempfile.NamedTemporaryFile()                     
    195                 open(encrCertTmpFile.name, "w").write(reqKeys['encrCert']) 
    196      
    197                 authResp.encrypt(encrPubKeyFilePath=encrCertTmpFile.name) 
    198                  
    199         except Exception, e: 
    200             authResp = AuthorisationResp(\ 
    201                                       statCode=AuthorisationResp.accessError, 
    202                                       errMsg=str(e)) 
    203  
    204          
    205         # Convert response into encrypted XML formatted string     
    206         resp._authorisationResp = authResp()                                                             
    207         return resp 
    208  
    209  
    210     #_________________________________________________________________________ 
     221        self.request = ps.Parse(getTrustedHostInfoInputMsg.typecode) 
     222        parameters = self.request._role 
     223 
     224        # If we have an implementation object use it 
     225        if hasattr(self,'impl'): 
     226            parameters = self.impl.getTrustedHostInfo(parameters) 
     227 
     228        result = getTrustedHostInfoOutputMsg() 
     229        # If we have an implementation object, copy the result  
     230        if hasattr(self,'impl'): 
     231            result._trustedHosts = parameters 
     232        return result 
     233 
     234    soapAction['getTrustedHostInfo'] = 'soap_getTrustedHostInfo' 
     235    root[(getTrustedHostInfoInputMsg.typecode.nspname,getTrustedHostInfoInputMsg.typecode.pname)] = 'soap_getTrustedHostInfo' 
     236 
    211237    def soap_getPubKey(self, ps): 
    212         """Get session manager public key in order to initiate a encrypted 
    213         request""" 
    214          
    215         if self.__debug: 
    216             import pdb 
    217             pdb.set_trace() 
    218         
    219         # assign return values to response object 
    220         resp = pubKeyResponseWrapper() 
    221  
    222         try: 
    223             # Get public key file and read into string      
    224             pubKey = open(self.__srv['certFile']).read() 
    225             pubKeyResp = PubKeyResp(pubKey=pubKey) 
    226              
    227         except IOError, (errNo, errMsg): 
    228             pubKeyResp = PubKeyResp(errMsg="Reading public key \"%s\": %s" % \ 
    229                                     (self.__srv['certFile'], errMsg))                 
    230         except Exception, e: 
    231             pubKeyResp = PubKeyResp(errMsg=str(e)) 
    232  
    233          
    234         # Convert response into encrypted XML formatted string     
    235         resp._pubKeyResp = pubKeyResp()                                                             
    236         return resp 
    237          
     238        self.request = ps.Parse(getPubKeyInputMsg.typecode) 
     239 
     240        # If we have an implementation object use it 
     241        if hasattr(self,'impl'): 
     242            parameters = self.impl.getPubKey() 
     243 
     244        result = getPubKeyOutputMsg() 
     245        # If we have an implementation object, copy the result  
     246        if hasattr(self,'impl'): 
     247            result._x509Cert = parameters 
     248        return result 
     249 
     250    soapAction['getPubKey'] = 'soap_getPubKey' 
     251    root[(getPubKeyInputMsg.typecode.nspname,getPubKeyInputMsg.typecode.pname)] = 'soap_getPubKey' 
     252 
Note: See TracChangeset for help on using the changeset viewer.