Ignore:
Timestamp:
13/10/09 16:58:40 (10 years ago)
Author:
pjkersha
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/ndg_security_server/ndg/security/server/wsgi/myproxy.py

    r5838 r5839  
    2424    RE_PATH_MATCH_LIST_OPTNAME = 'rePathMatchList' 
    2525     
     26    LOGON_FUNC_ENV_KEYNAME = ('ndg.security.server.wsgi.authn.' 
     27                              'MyProxyClientMiddleware.logon') 
     28    LOGON_FUNC_ENV_KEYNAME_OPTNAME = 'logonFunc'      
    2629    PARAM_PREFIX = 'myproxy.' 
    2730    MYPROXY_CLIENT_PARAM_PREFIX = 'client.' 
     
    5154         
    5255        self.myProxyClient = MyProxyClient(**myProxyClientKw) 
     56        paramName = prefix + \ 
     57                    MyProxyClientMiddleware.LOGON_FUNC_ENV_KEYNAME_OPTNAME 
     58                     
     59        self.logonFuncEnvironKeyName = local_conf.get(paramName, 
     60                                MyProxyClientMiddleware.LOGON_FUNC_ENV_KEYNAME) 
    5361 
     62    def _getLogonFuncEnvironKeyName(self): 
     63        return self.__logonFuncEnvironKeyName 
     64 
     65    def _setLogonFuncEnvironKeyName(self, value): 
     66        if not isinstance(value, basestring): 
     67            raise TypeError('Expecting string type for ' 
     68                            '"logonFuncEnvironKeyName"; got %r type' %  
     69                            type(value)) 
     70        self.__logonFuncEnvironKeyName = value 
     71 
     72    logonFuncEnvironKeyName = property(fget=_getLogonFuncEnvironKeyName,  
     73                                       fset=_setLogonFuncEnvironKeyName,  
     74                                       doc="key name in environ for the " 
     75                                           "custom authentication function " 
     76                                           "used by this class") 
    5477    def _getMyProxyClient(self): 
    5578        return self.__myProxyClient 
     
    7699        ''' 
    77100        log.debug("MyProxyClientMiddleware.__call__ ...") 
     101        environ[self.logonFuncEnvironKeyName] = self.myProxyLogonFunc 
    78102         
    79         if not self._pathMatch(): 
    80             return self._app(environ, start_response) 
    81         else: 
    82             try: 
    83                 # TODO: get username/passphrase from upstream HTTP Basic Auth 
    84                 # middleware 
    85                 credentials = self.myProxyClient.logon(username, passphrase) 
    86             except Exception, e: 
    87                 log.error(e) 
    88                  
    89                 # TODO: fit to appropriate HTTP error code 
    90                 raise 
    91              
    92             response = '\n'.join(credentials) 
    93             start_response(MyProxyClientMiddleware.getStatusMessage(httplib.OK), 
    94                            [('Content-length', str(len(response))), 
    95                             ('Content-type', 'plain/text')]) 
    96             return [response] 
     103#        if not self._pathMatch(): 
     104#            return self._app(environ, start_response) 
     105#        else: 
     106#            try: 
     107#                # TODO: get username/passphrase from upstream HTTP Basic Auth 
     108#                # middleware 
     109#                credentials = self.myProxyClient.logon(username, passphrase) 
     110#            except Exception, e: 
     111#                log.error(e) 
     112#                 
     113#                # TODO: fit to appropriate HTTP error code 
     114#                raise 
     115#             
     116#            response = '\n'.join(credentials) 
     117#            start_response(MyProxyClientMiddleware.getStatusMessage(httplib.OK), 
     118#                           [('Content-length', str(len(response))), 
     119#                            ('Content-type', 'plain/text')]) 
     120#            return [response] 
    97121         
    98  
    99122    def _pathMatch(self): 
    100123        """Apply a list of regular expression matching patterns to the contents 
     
    108131             
    109132        return False    
     133     
     134    @property 
     135    def myProxyLogonFunc(self): 
     136        """Return the MyProxy logon method wrapped as a HTTP Basic Auth  
     137        authenticate interface function 
     138        """ 
     139        def HTTPBasicAuthFunc(environ, username, password): 
     140            """Wrap MyProxy logon method as HTTPBasicAuthMiddleware  
     141            authenticate function""" 
     142            return self.myProxyClient.logon(environ, username, password) 
     143         
     144        return HTTPBasicAuthFunc 
    110145         
    111146         
Note: See TracChangeset for help on using the changeset viewer.