Changeset 1303 for TI12-security


Ignore:
Timestamp:
14/07/06 17:32:01 (13 years ago)
Author:
pjkersha
Message:

NDG/Session.py:

  • UserSession? createSessID -> addNewSessID public method to enable more than one session ID

to be tied to one session.

  • deleteUserSession - fix to input keyword args

NDG/CredWallet.py: fix to reqAuthorisation authzResp check.

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

Legend:

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

    r1301 r1303  
    538538 
    539539 
    540             if authzResp['statCode'] == authorisationResp.accessDenied: 
     540            if authzResp['statCode'] == authzResp.accessDenied: 
    541541                raise CredWalletAuthorisationDenied,\ 
    542542                            "Authorisation denied: %s" % authzResp['errMsg'] 
    543543 
    544             elif authzResp['statCode'] == authorisationResp.accessGranted: 
     544            elif authzResp['statCode'] == authzResp.accessGranted: 
    545545                attCert = authzResp['credential'] 
    546546                 
  • TI12-security/trunk/python/NDG/Session.py

    r1302 r1303  
    107107 
    108108 
     109    #_________________________________________________________________________ 
    109110    def __init__(self, *credWalletArgs, **credWalletKeys): 
    110111        """Initialise UserSession with args and keywords to CredWallet""" 
     
    118119        # it.  These are stored in a list 
    119120        self.__sessIDlist = [] 
    120         self.__createSessID() 
     121        self.addNewSessID() 
    121122        self.__credWallet = CredWallet(*credWalletArgs, **credWalletKeys) 
    122123 
    123                 
    124 #    def __repr__(self): 
    125 #        "Represent User Session"         
    126 #        return "<UserSession instance>" 
    127  
     124 
     125    #_________________________________________________________________________ 
    128126    def __setCookieDomain(self, cookieDomain): 
    129127        """Set domain for cookie - set to None to assume domain of web server 
     
    137135        self.__cookieDomain = cookieDomain 
    138136 
    139     cookieDomain = property(fset=__setCookieDomain, 
    140                             doc="Set cookie domain") 
     137    cookieDomain = property(fset=__setCookieDomain, doc="Set cookie domain") 
    141138 
    142139 
     
    173170 
    174171    #_________________________________________________________________________ 
    175     def __createSessID(self): 
     172    def addNewSessID(self): 
    176173        """Add a new session ID to be associated with this UserSession 
    177174        instance""" 
     
    769766        try:    
    770767            # Check for an existing session for the same user 
    771             userDN = proxyCert.dn 
     768            try: 
     769                userDN = str(X509CertParse(proxyCert).dn) 
     770                 
     771            except Exception, e: 
     772                raise SessionMgrError, \ 
     773                "Parsing input proxy certificate DN for session create: %s"%\ 
     774                                                                        str(e) 
     775 
    772776            if userDN in self.__dnDict: 
    773                 raise SessionMgrError, \ 
    774                                 "Session already exists for user \"%s\"" % dn 
    775              
    776             # Create a new user session using the new proxy certificate 
    777             # and session ID 
    778             # 
    779             # Nb. Client pub/pri key info to allow message level  
    780             # encryption for responses from Attribute Authority WS 
    781             userSess = UserSession(proxyCert,  
     777                # Update existing session with proxy cert and add a new  
     778                # session ID to access it - a single session can be accessed 
     779                # via multiple session IDs e.g. a user may wish to access the 
     780                # same session from the their desktop PC and their laptop. 
     781                # Different session IDs are allocated in each case. 
     782                userSess = self.__dnDict[userDN] 
     783                userSess.addNewSessID() 
     784                 
     785            else: 
     786                # Create a new user session using the new proxy certificate 
     787                # and session ID 
     788                # 
     789                # Nb. Client pub/pri key info to allow message level  
     790                # encryption for responses from Attribute Authority WS 
     791                userSess = UserSession(proxyCert,  
    782792                                   caPubKeyFilePath=self.__prop['caCertFile'], 
    783793                                   clntPubKeyFilePath=self.__prop['certFile'], 
    784794                                   clntPriKeyFilePath=self.__prop['keyFile'], 
    785795                                   clntPriKeyPwd=self.__prop['keyPPhrase'], 
    786                                    credRepos=self.__credRepos)                 
     796                                   credRepos=self.__credRepos) 
     797 
     798                # Also allow access by user DN 
     799                self.__dnDict[userDN] = userSess 
     800 
     801                                 
    787802            newSessID = userSess.latestSessID 
    788803             
     
    794809            # Add new session to list                  
    795810            self.__sessDict[newSessID] = userSess 
    796  
    797             # Also allow access by user DN 
    798             self.__dnDict[userDN] = userSess 
    799811                     
    800812            # Return new session 
     
    812824        __connect2UserSession([proxyCert]|[sessID]) 
    813825         
    814         proxyCert:    proxy certificate corresponding to an existing  
     826        proxyCert:    proxy certificate string corresponding to an existing  
    815827                      session to connect to. 
    816828        sessID:       similiarly, a web browser session ID linking to an 
     
    840852        elif 'proxyCert' in idKeys: 
    841853            try: 
    842                 userDN = X509Cert(idKeys['proxyCert']).dn 
     854                userDN = str(X509CertParse(idKeys['proxyCert']).dn) 
    843855                 
    844856            except Exception, e: 
     
    868880 
    869881    #_________________________________________________________________________         
    870     def deleteUserSession(self, sessID=sessID, proxyCert=proxyCert): 
     882    def deleteUserSession(self, sessID=None, proxyCert=None): 
    871883        """Delete an existing session by providing a valid session ID or 
    872884        proxy certificate - use for user logout 
     
    894906        elif proxyCert: 
    895907            try: 
    896                 userDN = X509Cert(idKeys['proxyCert']).dn 
     908                userDN = str(X509CertParse(idKeys['proxyCert']).dn) 
    897909                 
    898910            except Exception, e: 
  • TI12-security/trunk/python/Tests/SecurityClientTest.py

    r1302 r1303  
    147147            # NDG.SessionMgrIO.AuthorisationResp 
    148148            if 'errMsg' in authResp: 
    149                 print "Authorisation failed for user %s" % authResp['errMsg']             
     149                print "Authorisation failed for user: %s" % authResp['errMsg']             
    150150            else: 
    151151                print "User authorised" 
Note: See TracChangeset for help on using the changeset viewer.