Changeset 2051


Ignore:
Timestamp:
25/01/07 11:23:41 (13 years ago)
Author:
pjkersha
Message:
  • Working Attribute Authority unit tests *

python/ndg.security.server/ndg/security/server/AttAuthority/server-config.tac:

  • removed debug statements
  • getTrustedHostInfo: added code to make HostInfo? types and carry out serialization.

python/www/html/attAuthority.wsdl,
python/ndg.security.server/ndg/security/server/AttAuthority/AttAuthority_services_serv
er.py,
python/ndg.security.common/ndg/security/common/AttAuthority/AttAuthority_services_types.py,
python/ndg.security.common/ndg/security/common/AttAuthority/AttAuthority_services.py:
fix to WSDL: give name attribute to HostInfo? ComplexType?. No need to declare element.

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

AttAuthorityNoMatchingRoleInTrustedHosts? for handling getTrustedHostInfo errors.

  • changed usr -> user

python/ndg.security.server/ndg/security/server/AttAuthority/Makefile: make substitution
text macros

python/conf/attAuthorityProperties.xml,
python/ndg.security.test/ndg/security/test/AttAuthority/siteAAttAuthorityProperties.xml,
python/ndg.security.test/ndg/security/test/AttAuthority/siteBAttAuthorityProperties.xml,
python/ndg.security.test/ndg/security/test/AttAuthority/siteAUserRoles.py,
python/ndg.security.test/ndg/security/test/AttAuthority/siteBUserRoles.py:
changed usr -> user

python/ndg.security.test/ndg/security/test/AttAuthority/AttAuthorityClientTest.py:

  • fixed bugs in test method names
  • get host info and get trusted host info now correctly print output.

python/ndg.security.test/ndg/security/test/AttAuthority/siteAMapConfig.xml:
added trusted host info to allow testing with getTrustedHostInfo.

python/ndg.security.test/ndg/security/test/AttAuthority/attAuthorityClientTest.cfg:
fix to test3GetTrustedHostInfo method name tag

python/ndg.security.common/ndg/security/common/AttAuthority/init.py: AA client code
Fixed set up of dictionary output from returned ZSI types.

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

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/conf/attAuthorityProperties.xml

    r2039 r2051  
    1414    <attCertDir></attCertDir> 
    1515    <dnSeparator>/</dnSeparator> 
    16     <usrRolesModFilePath></usrRolesModFilePath> 
    17     <usrRolesModName></usrRolesModName> 
    18     <usrRolesClassName></usrRolesClassName> 
    19     <usrRolesPropFile></usrRolesPropFile> 
     16    <userRolesModFilePath></userRolesModFilePath> 
     17    <userRolesModName></userRolesModName> 
     18    <userRolesClassName></userRolesClassName> 
     19    <userRolesPropFile></userRolesPropFile> 
    2020</AAprop> 
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/AttAuthority/AttAuthority_services.py

    r2044 r2051  
    2929        # no ws-addressing 
    3030 
    31     # op: <ZSI.wstools.WSDLTools.Message instance at 0xb6cf374c> 
     31    # op: <ZSI.wstools.WSDLTools.Message instance at 0xb6cf322c> 
    3232    def getAttCert(self, userCert,userAttCert): 
    3333 
     
    4444        return attCert 
    4545 
    46     # op: <ZSI.wstools.WSDLTools.Message instance at 0xb6cf3a6c> 
     46    # op: <ZSI.wstools.WSDLTools.Message instance at 0xb6cf354c> 
    4747    def getHostInfo(self): 
    4848 
     
    5959        return hostname,aaURI,loginURI 
    6060 
    61     # op: <ZSI.wstools.WSDLTools.Message instance at 0xb6cfa48c> 
     61    # op: <ZSI.wstools.WSDLTools.Message instance at 0xb6cf3e6c> 
    6262    def getTrustedHostInfo(self, role): 
    6363 
     
    7070        # no output wsaction 
    7171        response = self.binding.Receive(getTrustedHostInfoOutputMsg.typecode) 
    72         return  
     72        trustedHosts = response._trustedHosts 
     73        return trustedHosts 
    7374 
    74     # op: <ZSI.wstools.WSDLTools.Message instance at 0xb6cfa60c> 
     75    # op: <ZSI.wstools.WSDLTools.Message instance at 0xb6cf3fec> 
    7576    def getX509Cert(self): 
    7677 
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/AttAuthority/AttAuthority_services_types.py

    r2044 r2051  
    1818    targetNamespace = "urn:ndg:security" 
    1919 
    20     class RoleList_Dec(ZSI.TCcompound.ComplexType, ElementDeclaration): 
    21         literal = "RoleList" 
    22         schema = "urn:ndg:security" 
    23         def __init__(self, **kw): 
    24             ns = ns0.RoleList_Dec.schema 
    25             TClist = [ZSI.TC.String(pname="localRole", aname="_localRole", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="remoteRole", aname="_remoteRole", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded"))] 
    26             kw["pname"] = ("urn:ndg:security","RoleList") 
    27             kw["aname"] = "_RoleList" 
    28             self.attribute_typecode_dict = {} 
    29             ZSI.TCcompound.ComplexType.__init__(self,None,TClist,inorder=0,**kw) 
    30             class Holder: 
    31                 __metaclass__ = pyclass_type 
    32                 typecode = self 
    33                 def __init__(self): 
    34                     # pyclass 
    35                     self._localRole = None 
    36                     self._remoteRole = None 
    37                     return 
    38             Holder.__name__ = "RoleList_Holder" 
    39             self.pyclass = Holder 
    40  
    41     class HostInfo_Dec(ZSI.TCcompound.ComplexType, ElementDeclaration): 
    42         literal = "HostInfo" 
    43         schema = "urn:ndg:security" 
    44         def __init__(self, **kw): 
    45             ns = ns0.HostInfo_Dec.schema 
    46             TClist = [ZSI.TC.String(pname="hostname", aname="_hostname", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="aaURI", aname="_aaURI", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="loginURI", aname="_loginURI", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), GTD("urn:ndg:security","RoleList",lazy=False)(pname="roleList", aname="_roleList", minOccurs=1, maxOccurs="unbounded", nillable=False, typed=False, encoded=kw.get("encoded"))] 
    47             kw["pname"] = ("urn:ndg:security","HostInfo") 
    48             kw["aname"] = "_HostInfo" 
    49             self.attribute_typecode_dict = {} 
    50             ZSI.TCcompound.ComplexType.__init__(self,None,TClist,inorder=0,**kw) 
     20    class HostInfo_Def(ZSI.TCcompound.ComplexType, TypeDefinition): 
     21        schema = "urn:ndg:security" 
     22        type = (schema, "HostInfo") 
     23        def __init__(self, pname, ofwhat=(), attributes=None, extend=False, restrict=False, **kw): 
     24            ns = ns0.HostInfo_Def.schema 
     25            TClist = [ZSI.TC.String(pname="hostname", aname="_hostname", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="aaURI", aname="_aaURI", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="loginURI", aname="_loginURI", minOccurs=1, maxOccurs=1, nillable=False, typed=False, encoded=kw.get("encoded")), ZSI.TC.String(pname="roleList", aname="_roleList", minOccurs=0, maxOccurs="unbounded", nillable=False, typed=False, encoded=kw.get("encoded"))] 
     26            self.attribute_typecode_dict = attributes or {} 
     27            if extend: TClist += ofwhat 
     28            if restrict: TClist = ofwhat 
     29            ZSI.TCcompound.ComplexType.__init__(self, None, TClist, pname=pname, inorder=0, **kw) 
    5130            class Holder: 
    5231                __metaclass__ = pyclass_type 
     
    169148        def __init__(self, **kw): 
    170149            ns = ns0.getTrustedHostInfoResponse_Dec.schema 
    171             TClist = [] 
     150            TClist = [GTD("urn:ndg:security","HostInfo",lazy=False)(pname="trustedHosts", aname="_trustedHosts", minOccurs=0, maxOccurs="unbounded", nillable=False, typed=False, encoded=kw.get("encoded"))] 
    172151            kw["pname"] = ("urn:ndg:security","getTrustedHostInfoResponse") 
    173152            kw["aname"] = "_getTrustedHostInfoResponse" 
     
    179158                def __init__(self): 
    180159                    # pyclass 
     160                    self._trustedHosts = [] 
    181161                    return 
    182162            Holder.__name__ = "getTrustedHostInfoResponse_Holder" 
  • TI12-security/trunk/python/ndg.security.common/ndg/security/common/AttAuthority/__init__.py

    r2044 r2051  
    253253 
    254254        try:    
    255             resp = self.__srv.getHostInfo() 
    256  
    257         except Exception, e: 
    258             raise AttAuthorityClientError, "Error: " + str(e) 
    259  
    260         return resp 
     255            hostname, aaURI, loginURI = self.__srv.getHostInfo() 
     256 
     257        except Exception, e: 
     258            raise AttAuthorityClientError, \ 
     259                                    "Rerieving host information: " + str(e) 
     260         
     261        hostInfo = {} 
     262         
     263        hostInfo[hostname] = {}         
     264        hostInfo[hostname]['aaURI'] = aaURI 
     265        hostInfo[hostname]['loginURI'] = loginURI 
     266 
     267        return hostInfo 
    261268 
    262269                                     
     
    275282        try:    
    276283            # Pass encrypted request 
    277             resp = self.__srv.getTrustedHostInfo(role) 
    278  
    279         except Exception, e: 
    280             raise AttAuthorityClientError, "Error: " + str(e) 
    281  
    282         return resp 
     284            trustedHosts = self.__srv.getTrustedHostInfo(role) 
     285 
     286        except Exception, e: 
     287            raise AttAuthorityClientError, \ 
     288                                "Getting trusted host information: " + str(e) 
     289 
     290        # Convert into dictionary form as used by AttAuthority class 
     291        trustedHostInfo = {} 
     292        for trustedHost in trustedHosts: 
     293            hostname = trustedHost.get_element_hostname() 
     294             
     295            trustedHostInfo[hostname] = {} 
     296             
     297            trustedHostInfo[hostname]['aaURI'] = \ 
     298                                            trustedHost.get_element_aaURI() 
     299            trustedHostInfo[hostname]['loginURI'] = \ 
     300                                            trustedHost.get_element_loginURI() 
     301            trustedHostInfo[hostname]['role'] = \ 
     302                                            trustedHost.get_element_roleList() 
     303             
     304        return trustedHostInfo 
    283305     
    284306 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/AttAuthority/AttAuthority_services_server.py

    r2044 r2051  
    1515 
    1616  <wsdl:types> 
    17     <xsd:schema targetNamespace=\"urn:ndg:security\"> 
     17    <xsd:schema> 
    1818     
    19       <xsd:element name=\"RoleList\"> 
    20         <xsd:complexType> 
    21           <xsd:sequence> 
    22             <xsd:element maxOccurs=\"1\" minOccurs=\"1\" name=\"localRole\" type=\"xsd:string\"/> 
    23             <xsd:element maxOccurs=\"1\" minOccurs=\"1\" name=\"remoteRole\" type=\"xsd:string\"/> 
    24           </xsd:sequence> 
    25         </xsd:complexType> 
    26       </xsd:element> 
    27     
    28       <xsd:element name=\"HostInfo\"> 
     19      <xsd:complexType name=\"HostInfo\"> 
     20        <xsd:sequence> 
     21          <xsd:element maxOccurs=\"1\" minOccurs=\"1\" name=\"hostname\" type=\"xsd:string\"/> 
     22          <xsd:element maxOccurs=\"1\" minOccurs=\"1\" name=\"aaURI\" type=\"xsd:string\"/> 
     23          <xsd:element maxOccurs=\"1\" minOccurs=\"1\" name=\"loginURI\" type=\"xsd:string\"/> 
     24          <xsd:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"roleList\" type=\"xsd:string\"/> 
     25        </xsd:sequence> 
     26      </xsd:complexType> 
     27       
     28      <xsd:element name=\"getAttCert\"> 
     29        <xsd:complexType> 
     30          <xsd:sequence> 
     31            <xsd:element maxOccurs=\"1\" minOccurs=\"0\" name=\"userCert\" type=\"xsd:string\"/> 
     32            <xsd:element maxOccurs=\"1\" minOccurs=\"0\" name=\"userAttCert\" type=\"xsd:string\"/> 
     33          </xsd:sequence> 
     34        </xsd:complexType> 
     35      </xsd:element> 
     36       
     37      <xsd:element name=\"getAttCertResponse\"> 
     38        <xsd:complexType> 
     39          <xsd:sequence> 
     40            <xsd:element name=\"attCert\" type=\"xsd:string\"/> 
     41          </xsd:sequence> 
     42        </xsd:complexType> 
     43      </xsd:element> 
     44 
     45      <xsd:element name=\"getHostInfo\"> 
     46        <xsd:complexType/> 
     47      </xsd:element> 
     48 
     49      <xsd:element name=\"getHostInfoResponse\"> 
    2950        <xsd:complexType> 
    3051          <xsd:sequence> 
     
    3253            <xsd:element maxOccurs=\"1\" minOccurs=\"1\" name=\"aaURI\" type=\"xsd:string\"/> 
    3354            <xsd:element maxOccurs=\"1\" minOccurs=\"1\" name=\"loginURI\" type=\"xsd:string\"/> 
    34             <xsd:element maxOccurs=\"unbounded\" minOccurs=\"1\" name=\"roleList\" type=\"tns:RoleList\"/> 
    35           </xsd:sequence> 
    36         </xsd:complexType> 
    37       </xsd:element> 
    38        
    39       <xsd:element name=\"getAttCert\"> 
    40         <xsd:complexType> 
    41           <xsd:sequence> 
    42             <xsd:element maxOccurs=\"1\" minOccurs=\"0\" name=\"userCert\" type=\"xsd:string\"/> 
    43             <xsd:element maxOccurs=\"1\" minOccurs=\"0\" name=\"userAttCert\" type=\"xsd:string\"/> 
    44           </xsd:sequence> 
    45         </xsd:complexType> 
    46       </xsd:element> 
    47        
    48       <xsd:element name=\"getAttCertResponse\"> 
    49         <xsd:complexType> 
    50           <xsd:sequence> 
    51             <xsd:element name=\"attCert\" type=\"xsd:string\"/> 
    52           </xsd:sequence> 
    53         </xsd:complexType> 
    54       </xsd:element> 
    55  
    56       <xsd:element name=\"getHostInfo\"> 
    57         <xsd:complexType/> 
    58       </xsd:element> 
    59  
    60       <xsd:element name=\"getHostInfoResponse\"> 
    61         <xsd:complexType> 
    62           <xsd:sequence> 
    63             <xsd:element maxOccurs=\"1\" minOccurs=\"1\" name=\"hostname\" type=\"xsd:string\"/> 
    64             <xsd:element maxOccurs=\"1\" minOccurs=\"1\" name=\"aaURI\" type=\"xsd:string\"/> 
    65             <xsd:element maxOccurs=\"1\" minOccurs=\"1\" name=\"loginURI\" type=\"xsd:string\"/> 
    6655          </xsd:sequence> 
    6756        </xsd:complexType> 
     
    7766 
    7867      <xsd:element name=\"getTrustedHostInfoResponse\"> 
    79         <xsd:complexType/> 
    80 <!--     
    81         <xsd:complexType> 
    82           <xsd:sequence> 
    83             <xsd:element name=\"trustedHosts\" type=\"tns:HostInfo\" minOccurs=\"0\" maxOccurs=\"unbounded\"/> 
    84           </xsd:sequence> 
    85         </xsd:complexType> 
    86 --> 
     68        <xsd:complexType> 
     69          <xsd:sequence> 
     70            <xsd:element maxOccurs=\"unbounded\" minOccurs=\"0\" name=\"trustedHosts\" type=\"tns:HostInfo\"/> 
     71          </xsd:sequence> 
     72        </xsd:complexType> 
    8773      </xsd:element> 
    8874 
     
    267253 
    268254        result = getTrustedHostInfoOutputMsg() 
     255        # If we have an implementation object, copy the result  
     256        if hasattr(self,'impl'): 
     257            result._trustedHosts = parameters 
    269258        return self.request, result 
    270259 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/AttAuthority/Makefile

    r2036 r2051  
    2020TMP_FILE=AttAuthority_services_server.py.tmp 
    2121 
     22ORIG1=return result 
     23REPL1=return self.request, result 
     24ORIG2=from AttAuthority_services import 
     25REPL2=from ndg.security.common.AttAuthority.AttAuthority_services import 
     26 
    2227generateStubs: ${WSDL_FILE} 
    2328        @echo Generate stub ... 
    2429        ${CMD} ${OPTS} ${WSDL_FILE} 
    2530        @echo Make substitutions for compatibility with Twisted and for correct NDG import ... 
    26         cat ${STUB_FILE} |sed  s/"return result"/"return self.request, result"/g | \ 
    27         sed s/"from AttAuthority_services import"/"from ndg.security.common.AttAuthority.AttAuthority_services import"/g > \ 
     31        @cat ${STUB_FILE}|sed  s/"${ORIG1}"/"${REPL1}"/g |sed s/"${ORIG2}"/"${REPL2}"/g > \ 
    2832        ${TMP_FILE} 
    29         mv ${TMP_FILE} ${STUB_FILE} 
     33        @mv ${TMP_FILE} ${STUB_FILE} 
    3034        @echo Done. 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/AttAuthority/__init__.py

    r2044 r2051  
    3636class AttAuthorityError(Exception): 
    3737    """Exception handling for NDG Attribute Authority class.""" 
    38     pass 
    3938 
    4039 
     
    4645    but that the request is otherwise valid.  In all other error cases raise 
    4746    AttAuthorityError"""    
    48     pass 
    49  
     47 
     48 
     49class AttAuthorityNoTrustedHosts(AttAuthorityError): 
     50    """Raise from getTrustedHosts if there are no trusted hosts defined in 
     51    the map configuration""" 
     52 
     53class AttAuthorityNoMatchingRoleInTrustedHosts(AttAuthorityError): 
     54    """Raise from getTrustedHosts if there is no mapping to any of the  
     55    trusted hosts for the given input role name""" 
    5056 
    5157 
     
    9197                    'attCertDir', 
    9298                    'dnSeparator', 
    93                     'usrRolesModFilePath', 
    94                     'usrRolesModName', 
    95                     'usrRolesClassName', 
    96                     'usrRolesPropFile') 
     99                    'userRolesModFilePath', 
     100                    'userRolesModName', 
     101                    'userRolesClassName', 
     102                    'userRolesPropFile') 
    97103     
    98104    def __init__(self,  
     
    178184                # Temporarily extend system path ready for import 
    179185                sysPathBak = sys.path[:] 
    180                 sys.path.append(self.__prop['usrRolesModFilePath']) 
     186                sys.path.append(self.__prop['userRolesModFilePath']) 
    181187                 
    182188                # Import module name specified in properties file 
    183                 usrRolesMod = __import__(self.__prop['usrRolesModName'], 
     189                userRolesMod = __import__(self.__prop['userRolesModName'], 
    184190                                         globals(), 
    185191                                         locals(), 
    186                                          [self.__prop['usrRolesClassName']]) 
    187      
    188                 usrRolesClass = eval('usrRolesMod.' + \ 
    189                                      self.__prop['usrRolesClassName']) 
     192                                         [self.__prop['userRolesClassName']]) 
     193     
     194                userRolesClass = eval('userRolesMod.' + \ 
     195                                     self.__prop['userRolesClassName']) 
    190196            finally: 
    191197                sys.path[:] = sysPathBak 
     
    195201 
    196202        # Check class inherits from AAUserRoles abstract base class 
    197         if not issubclass(usrRolesClass, AAUserRoles): 
     203        if not issubclass(userRolesClass, AAUserRoles): 
    198204            raise AttAuthorityError, \ 
    199205                "User Roles class %s must be derived from AAUserRoles" % \ 
    200                 self.__prop['usrRolesClassName'] 
     206                self.__prop['userRolesClassName'] 
    201207 
    202208 
    203209        # Instantiate custom class 
    204210        try: 
    205             self.__usrRoles = usrRolesClass(self.__prop['usrRolesPropFile']) 
     211            self.__userRoles = userRolesClass(self.__prop['userRolesPropFile']) 
    206212             
    207213        except Exception, e: 
     
    312318                                     
    313319                # Proxy Certificate input as a file  
    314                 usrProxyCert = X509Cert() 
    315                 usrProxyCert.read(proxyCertFilePath) 
     320                userProxyCert = X509Cert() 
     321                userProxyCert.read(proxyCertFilePath) 
    316322                 
    317323            elif isinstance(proxyCert, basestring): 
    318324 
    319325                # Proxy Certificate input as string text 
    320                 usrProxyCert = X509Cert() 
    321                 usrProxyCert.parse(proxyCert) 
     326                userProxyCert = X509Cert() 
     327                userProxyCert.parse(proxyCert) 
    322328                 
    323329            elif isinstance(proxyCert, X509Cert): 
    324330                 
    325331                # Proxy is an NDG X509Cert type 
    326                 usrProxyCert = proxyCert 
     332                userProxyCert = proxyCert 
    327333                 
    328334            else: 
     
    336342        # Check proxy certificate hasn't expired 
    337343        try: 
    338             usrProxyCert.isValidTime(raiseExcep=True) 
     344            userProxyCert.isValidTime(raiseExcep=True) 
    339345             
    340346        except Exception, e: 
     
    344350             
    345351        # Get Distinguished name from certificate as an X500DN type 
    346         usrDN = usrProxyCert.dn 
     352        userDN = userProxyCert.dn 
    347353         
    348354         
     
    364370        try: 
    365371            attCert['holder'] = \ 
    366                         usrDN.serialise(separator=self.__prop['dnSeparator']) 
     372                        userDN.serialise(separator=self.__prop['dnSeparator']) 
    367373             
    368374        except Exception, e: 
     
    390396 
    391397            # Check against the proxy certificate's expiry 
    392             dtUsrProxyNotAfter = usrProxyCert.notAfter 
     398            dtUsrProxyNotAfter = userProxyCert.notAfter 
    393399             
    394400            if attCert.getValidityNotAfter(asDatetime=True) > \ 
     
    408414        # Check name is registered with this Attribute Authority - if no 
    409415        # user roles are found, the user is not registered 
    410         usrRoles = self.getRoles(str(usrDN)) 
    411         if usrRoles:             
     416        userRoles = self.getRoles(str(userDN)) 
     417        if userRoles:             
    412418            # Set as an Original Certificate 
    413419            # 
    414420            # User roles found - user is registered with this data centre 
    415421            # Add roles for this user for this data centre 
    416             attCert.addRoles(usrRoles) 
     422            attCert.addRoles(userRoles) 
    417423 
    418424            # Mark new Attribute Certificate as an original 
     
    476482                                    "Error creating X500DN for holder: %s" + e 
    477483             
    478             if holderDN != usrDN: 
     484            if holderDN != userDN: 
    479485                raise AttAuthorityError, \ 
    480486                    "User certificate and Attribute Certificate DNs " + \ 
    481                     "don't match: %s and %s" % (usrDN, holderDN) 
     487                    "don't match: %s and %s" % (userDN, holderDN) 
    482488             
    483489   
     
    755761         
    756762    #_________________________________________________________________________      
    757     def usrIsRegistered(self, usrDN): 
     763    def userIsRegistered(self, userDN): 
    758764        """Check a particular user is registered with the Data Centre that the 
    759765        Attribute Authority represents 
     
    761767        Nb. this method is not used internally by AttAuthority class 
    762768         
    763         @type usrDN: string  
    764         @param usrDN: user Distinguished Name 
     769        @type userDN: string  
     770        @param userDN: user Distinguished Name 
    765771        @rtype: bool 
    766772        @return: True if user is registered, False otherwise""" 
    767         return self.__usrRoles.usrIsRegistered(usrDN) 
     773        return self.__userRoles.userIsRegistered(userDN) 
    768774        
    769775         
    770776    #_________________________________________________________________________      
    771777    def getRoles(self, dn): 
    772         """Get the roles available to the registered user identified usrDN. 
     778        """Get the roles available to the registered user identified userDN. 
    773779 
    774780        @type dn: string  
     
    780786        # define how roles are accessed 
    781787        try: 
    782             return self.__usrRoles.getRoles(dn) 
     788            return self.__userRoles.getRoles(dn) 
    783789 
    784790        except Exception, e: 
     
    806812        """Return a dictionary of the hosts that have trust relationships 
    807813        with this AA.  The dictionary is indexed by the trusted host name 
    808         and contains WSDL URIs and the roles that map to the 
     814        and contains AA service, login URIs and the roles that map to the 
    809815        given input local role. 
    810816 
     
    821827        if not self.__mapConfig or not self.__localRole2RemoteRole: 
    822828            # This Attribute Authority has no trusted hosts 
    823             return {} 
     829            raise AttAuthorityNoTrustedHosts, \ 
     830                "The %s Attribute Authority has no trusted hosts" % \ 
     831                self.__prop['name'] 
    824832 
    825833 
     
    830838            # Nb. {}.fromkeys([...]).keys() is a fudge to get unique elements 
    831839            # from a list i.e. convert the list elements to a dict eliminating 
    832             # duplicated elements and convert the keys bacl into a list. 
     840            # duplicated elements and convert the keys back into a list. 
    833841            trustedHostInfo = dict(\ 
    834842            [\ 
     
    836844                    k, \ 
    837845                    { 
    838                         'aaURI':        v['aaURI'], \ 
     846                        'aaURI':       v['aaURI'], \ 
    839847                        'loginURI':    v['loginURI'], \ 
    840848                        'role':        {}.fromkeys(\ 
    841                             [\ 
    842                                 role['remote'] for role in v['role'] 
    843                             ]\ 
     849                            [role['remote'] for role in v['role']]\ 
    844850                        ).keys() 
    845851                    } 
     
    852858                trustedHosts = self.__localRole2TrustedHost[role] 
    853859            except: 
    854                 return {} 
     860                raise AttAuthorityNoMatchingRoleInTrustedHosts, \ 
     861                    'None of the trusted hosts have a mapping to the ' + \ 
     862                    'input role "%s"' % role 
    855863     
    856864     
     
    952960 
    953961 
    954     def usrIsRegistered(self, dn): 
     962    def userIsRegistered(self, dn): 
    955963        """Derived method should return True if user is known otherwise 
    956964        False 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/AttAuthority/server-config.tac

    r2039 r2051  
    4343 
    4444    def soap_getAttCert(self, ps, **kw): 
    45         import pdb;pdb.set_trace() 
    4645        request, response = AttAuthorityService.soap_getAttCert(self, ps) 
    4746         
     
    5756 
    5857    def soap_getHostInfo(self, ps, **kw): 
    59         import pdb;pdb.set_trace() 
    6058        request, response = AttAuthorityService.soap_getHostInfo(self, ps) 
    6159         
     
    6866 
    6967    def soap_getTrustedHostInfo(self, ps, **kw): 
    70         import pdb;pdb.set_trace() 
    7168        request, response = \ 
    72                 AttAuthorityService.soap_getTrustedHostInfo(self, ps) 
    73          
     69                                        AttAuthorityService.soap_getTrustedHostInfo(self, ps) 
    7470         
    7571        trustedHostInfo = aaSrv.aa.getTrustedHostInfo(\ 
    7672                                                                                role=request.get_element_role()) 
    7773 
     74                # Convert ready for serialization 
     75        trustedHosts = [] 
     76        for hostname, hostInfo in trustedHostInfo.items(): 
     77                        trustedHost = response.new_trustedHosts() 
     78                         
     79                        trustedHost.set_element_hostname(hostname) 
     80                        trustedHost.set_element_aaURI(hostInfo['aaURI']) 
     81                        trustedHost.set_element_loginURI(hostInfo['loginURI']) 
     82                        trustedHost.set_element_roleList(hostInfo['role']) 
     83                         
     84                        trustedHosts.append(trustedHost) 
     85                         
     86        response.set_element_trustedHosts(trustedHosts) 
     87                 
    7888        return request, response 
    7989 
    8090    def soap_getX509Cert(self, ps, **kw): 
    81         #import pdb;pdb.set_trace() 
    8291        request, response = AttAuthorityService.soap_getX509Cert(self, ps) 
    8392         
  • TI12-security/trunk/python/ndg.security.test/ndg/security/test/AttAuthority/AttAuthorityClientTest.py

    r2044 r2051  
    4343     
    4444    def test1GetX509Cert(self): 
    45         '''testGetX509Cert: retrieve Attribute Authority's X.509 cert.''' 
     45        '''test1GetX509Cert: retrieve Attribute Authority's X.509 cert.''' 
    4646        #import pdb;pdb.set_trace() 
    4747        resp = self.clnt.getX509Cert() 
    4848        print "Attribute Authority X.509 cert.:\n" + resp 
     49 
     50    def test2GetHostInfo(self): 
     51        """test2GetHostInfo: retrieve info for AA host""" 
     52        hostInfo = self.clnt.getHostInfo() 
     53        print "Host Info:\n %s" % hostInfo 
    4954         
    5055 
    51     def test2GetTrustedHostInfo(self): 
    52         """testGetTrustedHostInfo: retrieve trusted host info matching a 
     56    def test3GetTrustedHostInfo(self): 
     57        """test3GetTrustedHostInfo: retrieve trusted host info matching a 
    5358        given role""" 
    54         self.clnt.getTrustedHostInfo(\ 
    55                                  self.cfg['testGetTrustedHostInfo']['role']) 
     59        trustedHostInfo = self.clnt.getTrustedHostInfo(\ 
     60                                 self.cfg['test3GetTrustedHostInfo']['role']) 
     61        print "Trusted Host Info:\n %s" % trustedHostInfo 
    5662 
    5763 
    58     def test3GetTrustedHostInfoWithNoRole(self): 
    59         """testGetTrustedHostInfoWithNoRole: retrieve trusted host info  
     64    def test4GetTrustedHostInfoWithNoRole(self): 
     65        """test4GetTrustedHostInfoWithNoRole: retrieve trusted host info  
    6066        irrespective of role""" 
    61         self.clnt.getTrustedHostInfo() 
    62  
    63     def test4GetHostInfo(self): 
    64         """testGetHostInfo: retrieve info for AA host""" 
    65         self.clnt.getHostInfo() 
     67        trustedHostInfo = self.clnt.getTrustedHostInfo() 
     68        print "Trusted Host Info:\n %s" % trustedHostInfo 
    6669 
    6770 
    6871    def test5GetAttCert(self):         
    69         """testGetAttCert: Request attribute certificate from NDG Attribute  
     72        """test5GetAttCert: Request attribute certificate from NDG Attribute  
    7073        Authority Web Service.""" 
    7174     
     
    7376        try: 
    7477            userCertFilePath = \ 
    75                 self.cfg['testGetAttCert'].get('issuingusercertfilepath') 
     78                self.cfg['test5GetAttCert'].get('issuingusercertfilepath') 
    7679            userCertTxt = open(userCertFilePath, 'r').read() 
    7780         
     
    8790        attCert = self.clnt.getAttCert(userCert=userCertTxt) 
    8891        print "Attribute Certificate: \n\n:" + str(attCert) 
    89         attCert.filePath = self.cfg['testGetAttCert']['attcertfilepath'] 
     92        attCert.filePath = self.cfg['test5GetAttCert']['attcertfilepath'] 
    9093        attCert.write() 
    9194 
    9295 
    9396    def test6GetMappedAttCert(self):         
    94         """testGetAttCert: Request mapped attribute certificate from NDG  
    95         Attribute Authority Web Service.""" 
     97        """test6GetMappedAttCert: Request mapped attribute certificate from  
     98        NDG Attribute Authority Web Service.""" 
    9699     
    97100        # Read user Certificate into a string ready for passing via WS 
    98101        try: 
    99102            userCertFilePath = \ 
    100             self.cfg['testGetMappedAttCert'].get('issuingusercertfilepath') 
     103            self.cfg['test6GetMappedAttCert'].get('issuingusercertfilepath') 
    101104            userCertTxt = open(userCertFilePath, 'r').read() 
    102105         
     
    113116        try: 
    114117            userAttCert = AttCertRead(\ 
    115                       self.cfg['testGetMappedAttCert']['userattcertfilepath']) 
     118                      self.cfg['test6GetMappedAttCert']['userattcertfilepath']) 
    116119             
    117120        except IOError, ioErr: 
     
    121124        # Make client to site B Attribute Authority     
    122125        clnt = AttAuthorityClient(\ 
    123    uri=self.cfg['testGetMappedAttCert']['uri'],  
    124    clntCertFilePath=self.cfg['testGetMappedAttCert']['usercertfilepath'], 
    125    clntPriKeyFilePath=self.cfg['testGetMappedAttCert']['userprikeyfilepath'], 
     126   uri=self.cfg['test6GetMappedAttCert']['uri'],  
     127   clntCertFilePath=self.cfg['test6GetMappedAttCert']['usercertfilepath'], 
     128   clntPriKeyFilePath=self.cfg['test6GetMappedAttCert']['userprikeyfilepath'], 
    126129   tracefile=sys.stderr) 
    127130     
     
    137140        map = map(AttAuthorityClientTestCase, 
    138141                  ( 
    139                     "testGetHostInfo", 
    140                     "testGetTrustedHostInfo", 
    141                     "testGetTrustedHostInfoWithNoRole", 
    142                     "testGetAttCert", 
    143                     "testGetMappedAttCert", 
    144                     "testGetX509Cert", 
     142                    "test1GetX509Cert", 
     143                    "test2GetHostInfo", 
     144                    "test3GetTrustedHostInfo", 
     145                    "test4GetTrustedHostInfoWithNoRole", 
     146                    "test5GetAttCert", 
     147                    "test6GetMappedAttCert", 
    145148                  )) 
    146149        unittest.TestSuite.__init__(self, map) 
  • TI12-security/trunk/python/ndg.security.test/ndg/security/test/AttAuthority/attAuthorityClientTest.cfg

    r2044 r2051  
    2020userprikeyfilepath = ./proxy-key.pem 
    2121 
    22 [test2GetTrustedHostInfo] 
     22[test3GetTrustedHostInfo] 
    2323role = postgrad 
     24# Test no matching role exception 
     25#role = blah 
    2426  
    2527[test5GetAttCert] 
  • TI12-security/trunk/python/ndg.security.test/ndg/security/test/AttAuthority/siteAAttAuthorityProperties.xml

    r2039 r2051  
    1414    <attCertDir>$NDGSEC_AA_UNITTEST_DIR</attCertDir> 
    1515    <dnSeparator>/</dnSeparator> 
    16     <usrRolesModFilePath>$NDGSEC_AA_UNITTEST_DIR</usrRolesModFilePath> 
    17     <usrRolesModName>siteAUserRoles</usrRolesModName> 
    18     <usrRolesClassName>TestUserRoles</usrRolesClassName> 
    19     <usrRolesPropFile></usrRolesPropFile> 
     16    <userRolesModFilePath>$NDGSEC_AA_UNITTEST_DIR</userRolesModFilePath> 
     17    <userRolesModName>siteAUserRoles</userRolesModName> 
     18    <userRolesClassName>TestUserRoles</userRolesClassName> 
     19    <userRolesPropFile></userRolesPropFile> 
    2020</AAprop> 
  • TI12-security/trunk/python/ndg.security.test/ndg/security/test/AttAuthority/siteAMapConfig.xml

    r2039 r2051  
    55            <loginURI>thisHostLoginPageURI</loginURI> 
    66        </thisHost> 
     7    <trusted name="Site C"> 
     8            <aaURI>attAuthorityURI</aaURI> 
     9            <loginURI>loginPageURI</loginURI> 
     10                <role remote="StaffMember" local="staff"/> 
     11    </trusted> 
     12    <trusted name="Site D"> 
     13            <aaURI>attAuthorityURI</aaURI> 
     14            <loginURI>loginPageURI</loginURI> 
     15                <role remote="academic" local="postgrad"/> 
     16                <role remote="student" local="SiteDStudent"/> 
     17                <role remote="eoGroup" local="atsr-archive"/> 
     18    </trusted> 
    719</AAmap> 
  • TI12-security/trunk/python/ndg.security.test/ndg/security/test/AttAuthority/siteAUserRoles.py

    r2039 r2051  
    2424 
    2525 
    26     def usrIsRegistered(self, dn): 
     26    def userIsRegistered(self, dn): 
    2727        return True 
    2828 
  • TI12-security/trunk/python/ndg.security.test/ndg/security/test/AttAuthority/siteBAttAuthorityProperties.xml

    r2039 r2051  
    1414    <attCertDir>$NDGSEC_AA_UNITTEST_DIR</attCertDir> 
    1515    <dnSeparator>/</dnSeparator> 
    16     <usrRolesModFilePath>$NDGSEC_AA_UNITTEST_DIR</usrRolesModFilePath> 
    17     <usrRolesModName>siteBUserRoles</usrRolesModName> 
    18     <usrRolesClassName>TestUserRoles</usrRolesClassName> 
    19     <usrRolesPropFile></usrRolesPropFile> 
     16    <userRolesModFilePath>$NDGSEC_AA_UNITTEST_DIR</userRolesModFilePath> 
     17    <userRolesModName>siteBUserRoles</userRolesModName> 
     18    <userRolesClassName>TestUserRoles</userRolesClassName> 
     19    <userRolesPropFile></userRolesPropFile> 
    2020</AAprop> 
  • TI12-security/trunk/python/ndg.security.test/ndg/security/test/AttAuthority/siteBUserRoles.py

    r2044 r2051  
    2424 
    2525 
    26     def usrIsRegistered(self, dn): 
    27         return True 
     26    def userIsRegistered(self, dn): 
     27        return False 
    2828 
    2929 
  • TI12-security/trunk/python/www/html/attAuthority.wsdl

    r2044 r2051  
    1111 
    1212  <wsdl:types> 
    13     <xsd:schema targetNamespace="urn:ndg:security"> 
     13    <xsd:schema> 
    1414     
    15       <xsd:element name="RoleList"> 
    16         <xsd:complexType> 
    17           <xsd:sequence> 
    18             <xsd:element name="localRole" type="xsd:string" minOccurs="1" maxOccurs="1"/> 
    19             <xsd:element name="remoteRole" type="xsd:string" minOccurs="1" maxOccurs="1"/> 
    20           </xsd:sequence> 
    21         </xsd:complexType> 
    22       </xsd:element> 
    23     
    24       <xsd:element name="HostInfo"> 
    25         <xsd:complexType> 
    26           <xsd:sequence> 
    27             <xsd:element name="hostname" type="xsd:string" minOccurs="1" maxOccurs="1"/> 
    28             <xsd:element name="aaURI" type="xsd:string" minOccurs="1" maxOccurs="1"/> 
    29             <xsd:element name="loginURI" type="xsd:string" minOccurs="1" maxOccurs="1"/> 
    30             <xsd:element name="roleList" type="tns:RoleList" minOccurs="1" maxOccurs="unbounded"/> 
    31           </xsd:sequence> 
    32         </xsd:complexType> 
    33       </xsd:element> 
     15      <xsd:complexType name="HostInfo"> 
     16        <xsd:sequence> 
     17          <xsd:element name="hostname" type="xsd:string" minOccurs="1" maxOccurs="1"/> 
     18          <xsd:element name="aaURI" type="xsd:string" minOccurs="1" maxOccurs="1"/> 
     19          <xsd:element name="loginURI" type="xsd:string" minOccurs="1" maxOccurs="1"/> 
     20          <xsd:element name="roleList" type="xsd:string" minOccurs="0" maxOccurs="unbounded"/> 
     21        </xsd:sequence> 
     22      </xsd:complexType> 
    3423       
    3524      <xsd:element name="getAttCert"> 
     
    7362 
    7463      <xsd:element name="getTrustedHostInfoResponse"> 
    75         <xsd:complexType/> 
    76 <!--     
    7764        <xsd:complexType> 
    7865          <xsd:sequence> 
     
    8067          </xsd:sequence> 
    8168        </xsd:complexType> 
    82 --> 
    8369      </xsd:element> 
    8470 
Note: See TracChangeset for help on using the changeset viewer.