Ignore:
Timestamp:
25/05/06 16:14:18 (13 years ago)
Author:
pjkersha
Message:

Tests/SecurityClientTest?.py: mods to run on gabriel.

Tests/security.py: added functionality to get trusted host info.

dist/NDG-Security-0.66.tar.gz: new distro for testing on gabriel.

conf/mapConfig.xml: added loginURI tag for each trusted host - indicate URI for user login useful for forwarding of
login page from remote site.

NDG/AttAuthorityIO.py: include loginURI tag in trusted host info response message.

NDG/SecurityCGI.py: include functionality to get trusted host info from an AttAuthority?

NDG/AttAuthority.py: added loginURI tag for getTrustedHostInfo call.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/NDG/SecurityCGI.py

    r1007 r1018  
    4343    def __init__(self, 
    4444                 smWSDL, 
    45                  userName=None, 
    46                  passPhrase=None, 
     45                 aaWSDL, 
    4746                 smPubKeyFilePath=None, 
     47                 aaPubKeyFilePath=None, 
    4848                 clntPubKeyFilePath=None, 
    4949                 clntPriKeyFilePath=None, 
    5050                 clntPriKeyPwd=None, 
    51                  aaPubKey=None, 
     51                 userName=None, 
     52                 passPhrase=None, 
    5253                 scriptName=None, 
    5354                 returnURI=None,  
    54                  trustedHosts=None, 
     55                 trustedHostInfo=None, 
    5556                 wsDebug=False, 
    5657                 **cgiFieldStorageKwArgs): 
     
    6465                              to the user's home site to obtain their  
    6566                              credentials 
    66         trustedHosts:         dictionary of URIs for trusted hosts indexed by 
     67        trustedHostInfo:     dictionary of URIs for trusted hosts indexed by 
    6768                              hostname 
    6869        wsDebug:              print output from WS transactions to stderr""" 
    6970         
    7071        self.smWSDL = smWSDL 
     72        self.aaWSDL = aaWSDL 
     73         
    7174        self.userName = userName 
    7275        self.passPhrase = passPhrase 
     76         
    7377        self.smPubKeyFilePath = smPubKeyFilePath 
     78        self.aaPubKeyFilePath = aaPubKeyFilePath 
     79         
    7480        self.clntPubKeyFilePath = clntPubKeyFilePath 
    7581        self.clntPriKeyFilePath = clntPriKeyFilePath 
    7682        self.clntPriKeyPwd = clntPriKeyPwd 
    77         self.__aaPubKey = aaPubKey 
    7883         
    7984        if scriptName: 
     
    8388             
    8489        self.returnURI = returnURI 
    85         self.trustedHosts = trustedHosts 
     90        self.trustedHostInfo = trustedHostInfo 
    8691        self.__wsDebug = False 
    8792        self.__authorisationMethod = None 
     
    320325        # Instantiate WS proxy and request connection 
    321326        try: 
    322             smClient = SessionClient( 
    323                                 smWSDL=self.smWSDL, 
    324                                 smPubKeyFilePath=self.smPubKeyFilePath, 
    325                                 clntPubKeyFilePath=self.clntPubKeyFilePath, 
    326                                 clntPriKeyFilePath=self.clntPriKeyFilePath, 
    327                                 traceFile=traceFile) 
    328  
    329             return smClient.connect(userName=self.userName, 
    330                                     pPhrase=self.passPhrase, 
    331                                     clntPriKeyPwd=self.clntPriKeyPwd) 
     327            smClnt = SessionClient(smWSDL=self.smWSDL, 
     328                                   smPubKeyFilePath=self.smPubKeyFilePath, 
     329                                   clntPubKeyFilePath=self.clntPubKeyFilePath, 
     330                                   clntPriKeyFilePath=self.clntPriKeyFilePath, 
     331                                   traceFile=traceFile) 
     332 
     333            return smClnt.connect(userName=self.userName, 
     334                                  pPhrase=self.passPhrase, 
     335                                  clntPriKeyPwd=self.clntPriKeyPwd) 
    332336        except Exception, e: 
    333337            raise SecurityCGIError("Session client: " + str(e)) 
     
    492496     
    493497     
     498    #_________________________________________________________________________ 
    494499    def showHomeSiteSelect(self, 
    495                            trustedHosts=None, 
     500                           trustedHostInfo=None, 
    496501                           scriptName=None, 
    497502                           contentTypeHdr=False, 
     
    502507                           pageTitle=""): 
    503508 
    504         if trustedHosts: 
    505             self.trustedHosts = trustedHosts 
    506          
     509        if trustedHostInfo: 
     510            self.trustedHostInfo = trustedHostInfo 
     511 
     512        if not self.trustedHostInfo: 
     513            self.getTrustedHostInfo() 
     514             
    507515        if scriptName: 
    508516            self.scriptName = scriptName 
     
    552560          <option value="">Select your home site...""" % self.scriptName 
    553561           
    554             for hostname, uri in trustedHosts.items(): 
    555                 print "<option value=\"%s\">%s" % (uri, hostname) 
     562            for hostname, info in self.trustedHostInfo.items(): 
     563                print "<option value=\"%s\">%s" % (info['loginURI'], hostname) 
    556564                 
    557565            print \ 
     
    573581     
    574582        # end of showHomeSiteSelect() 
    575          
    576          
    577 if __name__ == "__main__": 
    578     clntPubKeyFilePath = "../certs/GabrielCGI-cert.pem" 
    579     clntPriKeyFilePath = "../certs/GabrielCGI-key.pem" 
    580  
    581     securityCGI = SecurityCGI("http://gabriel.bnsc.rl.ac.uk/sessionMgr.wsdl", 
    582                  smPubKeyFilePath="/usr/local/NDG/conf/certs/gabriel-sm-cert.pem, 
    583                  clntPubKeyFilePath=clntPubKeyFilePath, 
    584                  clntPriKeyFilePath=clntPriKeyFilePath, 
    585                  returnURI="https://gabriel.bnsc.rl.ac.uk/cgi-bin/security.py",  
    586                  trustedHosts=None) 
    587     securityCGI() 
     583 
     584 
     585    #_________________________________________________________________________ 
     586    def getTrustedHostInfo(self): 
     587        """Call Attribute Authority to find out trusted hosts.  These can be 
     588        use to populate list for use to select home site for login""" 
     589         
     590        if self.__wsDebug: 
     591            traceFile = sys.stderr 
     592        else: 
     593            traceFile = None 
     594 
     595        try: 
     596            aaClnt = AttAuthorityClient(aaWSDL=self.aaWSDL, 
     597                                aaPubKeyFilePath=self.aaPubKeyFilePath, 
     598                                clntPubKeyFilePath=self.clntPubKeyFilePath, 
     599                                clntPriKeyFilePath=self.clntPriKeyFilePath, 
     600                                traceFile=traceFile)  
     601             
     602            self.trustedHostInfo = aaClnt.getTrustedHostInfo( 
     603                                           clntPriKeyPwd=self.clntPriKeyPwd) 
     604        except Exception, e: 
     605            raise SecurityCGIError("Attribute Authority client: " + str(e)) 
Note: See TracChangeset for help on using the changeset viewer.