Changeset 4154 for TI12-security


Ignore:
Timestamp:
29/08/08 14:01:09 (11 years ago)
Author:
pjkersha
Message:

openid_provider: added capability to add test accounts via config and improved error handling for authN errors on login

Location:
TI12-security/trunk/python/ndg.security.server/ndg/security/server
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/pylons/container/lib/openid_provider_util.py

    r4132 r4154  
    6464    """Provide Kid Templating for OpenID Provider Middleware""" 
    6565     
    66     def renderLogin(self, environ, success_to=None, fail_to=None): 
     66    def renderLogin(self, environ, success_to=None, fail_to=None, msg=''): 
    6767        """Set-up Kid template for OpenID Provider Login""" 
    6868        c = State(urls=self.urls, session=self.session) 
     
    7070        c.success_to = success_to or self.urls['url_mainpage'] 
    7171        c.fail_to = fail_to or self.urls['url_mainpage']  
    72      
     72        c.xml = msg 
    7373        return _render('ndg.security.login', c=c, g=config, h=h) 
    7474         
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/pylons/development.ini

    r4153 r4154  
    8181openid_provider.axResponseHandler=ndg.security.server.pylons.container.lib.openid_provider_util:esgAXResponseHandler 
    8282 
     83# Basic authentication for testing/admin - comma delimited list of  
     84# <username>:<password> pairs 
     85openid_provider.usercreds=pjk:test, luca:esgndgtest 
     86 
    8387# Logging configuration 
    8488[loggers] 
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/wsgi/openid_provider.py

    r4153 r4154  
    6060               renderingClass=None, 
    6161               sregResponseHandler=None, 
    62                axResponseHandler=None) 
     62               axResponseHandler=None, 
     63               usercreds=None) 
    6364     
    6465    defPaths=dict([(k,v) for k,v in defKw.items() if k.startswith('path_')]) 
     
    141142        self._trace = opt['trace'] 
    142143 
     144        # Test/Admin username/password set from ini/kw args 
     145        userCreds = opt.get('usercreds') 
     146        if userCreds: 
     147            self._userCreds = dict([i.strip().split(':') \ 
     148                                    for i in userCreds.split(',')]) 
     149        else: 
     150            self._userCreds = {} 
     151 
     152        # TODO: revise this once a link an authN mechanism has been included. 
     153        if not self._userCreds: 
     154            raise OpenIDProviderConfigError("No username/password config " 
     155                                            "set-up") 
     156 
    143157        log.debug("opt=%r", opt)         
    144158        
     
    343357        """Display Login form""" 
    344358         
     359        if 'fail_to' not in kw: 
     360            kw['fail_to'] = self.urls['url_login'] 
     361             
    345362        response = self._renderer.renderLogin(environ, **kw) 
    346363        start_response('200 OK',  
     
    361378                              self.session['username']) 
    362379                    return self._redirect(start_response,self.query['fail_to']) 
    363                      
     380                 
     381                # TODO: revise this once a link an authN mechanism has been  
     382                # included. 
     383                if self._userCreds: 
     384                    username = self.query['username'] 
     385                    password = self.query.get('password') 
     386                    if username not in self._userCreds or \ 
     387                       password != self._userCreds[username]: 
     388                        log.error("Invalid username/password entered") 
     389                        msg = "<p>Invalid username/password entered.  " + \ 
     390                            "Please try again or if the problems persists " + \ 
     391                            "contact your system administrator</p>" 
     392                        response = self._renderer.renderLogin(environ,  
     393                                          msg=msg, 
     394                                          success_to=self.urls['url_decide']) 
     395                        start_response('200 OK',  
     396                               [('Content-type', 'text/html'+self.charset), 
     397                                ('Content-length', str(len(response)))]) 
     398                        return response 
     399                        
    364400                self.session['username'] = self.query['username'] 
    365401                self.session['approved'] = {} 
     
    688724 
    689725         
    690     def renderLogin(self, environ, success_to=None, fail_to=None): 
     726    def renderLogin(self, environ, success_to=None, fail_to=None, msg=''): 
    691727        """Render the login form.""" 
    692728         
     
    707743              <input type="submit" name="cancel" value="Cancel" /> 
    708744            </form> 
    709             ''' % (self.urls['url_loginsubmit'], success_to, fail_to)) 
     745            %s 
     746            ''' % (self.urls['url_loginsubmit'], success_to, fail_to, msg)) 
    710747 
    711748 
Note: See TracChangeset for help on using the changeset viewer.