Ignore:
Timestamp:
05/12/08 16:38:20 (13 years ago)
Author:
pjkersha
Message:

OpenID Provider Authentication interface:

  • started work on porting Buffet based RenderingInterface? from Pylons project into openid.provider.renderinginterface sub-package.
File:
1 moved

Legend:

Unmodified
Added
Removed
  • TI12-security/trunk/python/ndg.security.server/ndg/security/server/wsgi/openid/provider/renderinginterface/buffet.py

    r4548 r4549  
    1 """NDG Security OpenID Provider Pylons utilities 
    2  
    3 Includes Pylons based rendering interface for OpenIDProviderMiddleware 
     1"""NDG Security Pylons Buffet based Rendering Interface for  
     2OpenIDProviderMiddleware 
    43 
    54NERC Data Grid Project 
     
    1615from pylons.templating import Buffet 
    1716from pylons import config 
    18 import ndg.security.server.sso.sso.lib.helpers as h 
    1917import logging 
    2018log = logging.getLogger(__name__) 
     19 
     20from ndg.security.server.wsgi.openid.provider import RenderingInterface, \ 
     21    AuthNInterfaceConfigError 
    2122 
    2223# Boiler plate to create renderer 
     
    7374from ndg.security.server.wsgi.openid.provider import RenderingInterface 
    7475 
    75 class OpenIDProviderKidRendering(RenderingInterface): 
    76     """Provide Kid Templating for OpenID Provider Middleware via Buffet 
     76class BuffetRendering(RenderingInterface): 
     77    """Provide Templating for OpenID Provider Middleware via Buffet 
    7778    class""" 
    78      
    79     @staticmethod 
    80     def _render(templateName, **kw): 
     79 
     80    propNames = ('templateType', 'templateRoot') 
     81    def __init__(self, **prop): 
     82        try: 
     83            for p in prop: 
     84                setattr(self, p, prop[p]) 
     85        except KeyError, e: 
     86            raise AuthNInterfaceConfigError("Missing property: %s" % e)    
     87          
     88        self._buffet = OpenIDProviderRenderingBuffet(self.templateType,  
     89                                                template_root=templateRoot) 
     90         
     91    def _render(self, templateName, **kw): 
    8192        '''Wrapper for Buffet.render''' 
    82         rendering = buffet.render(template_name=templateName, namespace=kw) 
     93        rendering = self._buffet.render(template_name=templateName,  
     94                                        namespace=kw) 
    8395        return rendering 
    8496     
    8597    def login(self, environ, start_response, success_to=None, fail_to=None,  
    8698              msg=''): 
    87         """Set-up Kid template for OpenID Provider Login""" 
     99        """Set-up template for OpenID Provider Login""" 
    88100        c = State(urls=self.urls, session=self.session) 
    89101        c.title = "OpenID Login" 
     
    92104        c.xml = msg 
    93105         
    94         response = OpenIDProviderKidRendering._render('ndg.security.login',  
    95                                                       c=c, g=config, h=h) 
     106        response = BuffetRendering._render('ndg.security.login',  
     107                                           c=c, g=config, h=h) 
    96108        start_response('200 OK',  
    97109                       [('Content-type', 'text/html'+self.charset), 
     
    101113         
    102114    def mainPage(self, environ, start_response): 
    103         """Set-up Kid template for OpenID Provider Login""" 
     115        """Set-up template for OpenID Provider Login""" 
    104116        c = State(urls=self.urls, session=self.session) 
    105117        c.title = "OpenID Provider" 
     
    107119                        self.urls['url_serveryadis'] 
    108120     
    109         response = OpenIDProviderKidRendering._render('ndg.security.mainPage',  
    110                                                       c=c, g=config, h=h) 
     121        response = BuffetRendering._render('ndg.security.mainPage',  
     122                                           c=c, g=config, h=h) 
    111123        start_response('200 OK',  
    112124                       [('Content-type', 'text/html'+self.charset), 
     
    118130        path = environ['PATH_INFO'].rstrip('/') 
    119131        idPath = self.urls['url_id'].replace(self.base_url, '') 
    120         username = path[len(idPath)+1:] 
    121         if not username: 
     132        userIdentifier = path[len(idPath)+1:] 
     133        if not userIdentifier: 
    122134            h.redirect_to(self.urls['url_mainpage']) 
    123135             
     
    129141               
    130142        yadis_loc_tag = '<meta http-equiv="x-xrds-location" content="%s"/>' % \ 
    131             (self.urls['url_yadis']+'/'+username) 
     143            (self.urls['url_yadis']+'/'+userIdentifier) 
    132144             
    133145        c.headExtras = link_tag + yadis_loc_tag 
     
    135147        c.xml = "<b><pre>%s</pre></b>" % identityURL 
    136148         
    137         response = OpenIDProviderKidRendering._render( 
    138                                                 'ndg.security.identityPage',  
    139                                                 c=c, g=config, h=h)     
     149        response = BuffetRendering._render('ndg.security.identityPage',  
     150                                           c=c, g=config, h=h)     
    140151        start_response("200 OK",  
    141152                       [('Content-type', 'text/html'+self.charset), 
     
    152163        c.oidRequest = oidRequest 
    153164         
    154         response=OpenIDProviderKidRendering._render('ndg.security.decidePage',  
    155                                                     c=c, g=config, h=h) 
     165        response=BuffetRendering._render('ndg.security.decidePage',  
     166                                         c=c, g=config, h=h) 
    156167        start_response("200 OK",  
    157168                       [('Content-type', 'text/html'+self.charset), 
     
    167178                       [('Content-type', 'text/html'+self.charset), 
    168179                        ('Content-length', str(len(response)))]) 
    169         response = OpenIDProviderKidRendering._render('ndg.security.error',  
    170                                                       c=c, g=config, h=h) 
     180        response = BuffetRendering._render('ndg.security.error',  
     181                                           c=c, g=config, h=h) 
    171182        return response 
    172      
    173 # Earth System Grid interoperability tests 
    174  
    175 #esgAxAttr = {'urn:esg.security.gateway': 'BADC', 
    176 #        'urn:esg.security.authority': 'group_IPCC_role_default', 
    177 #        'http://axschema.org/namePerson/last': 'UserLastName', 
    178 #        'http://axschema.org/contact/country/home': 'UK', 
    179 #        'http://axschema.org/namePerson/middle': 'UserMiddleName', 
    180 #        'urn:esg.security.uuid': '0123456789abcdef', 
    181 #        'http://axschema.org/namePerson/first': 'UserFirstName', 
    182 #        'http://axschema.org/namePerson/friendly': '', 
    183 #        'http://axschema.org/contact/email': 'tester@test.com', 
    184 #        'urn:esg.security.organization': 'British Atmospheric Data Centre', 
    185 #} 
    186  
    187 esgAxAttr = { 
    188  'http://openid.net/schema/contact/state/home': 'Oxfordshire',  
    189  'http://openid.net/schema/namePerson/middle': 'George',  
    190  'http://openid.net/schema/contact/city/home': 'Didcot',  
    191  'http://openid.net/schema/person/guid': '0123456789abcdef',  
    192  'http://openid.net/schema/namePerson/friendly': 'username',  
    193  'http://openid.net/schema/company/name': 'The British Atmospheric Data Centre',  
    194  'http://openid.net/schema/contact/country/home': 'UK',  
    195  'http://openid.net/schema/namePerson/first': 'John',  
    196  'http://openid.net/schema/namePerson/last': 'Smith',  
    197  'http://openid.net/schema/contact/internet/email': 'testABC@rl.ac.uk', 
    198  'http://www.earthsystemgrid.org/authority': 'group_IPCC_role_default', 
    199  'http://www.earthsystemgrid.org/gateway': 'BADC', 
    200 } 
    201 esgAxAlias = { 
    202  'http://openid.net/schema/contact/state/home': 'state',  
    203  'http://openid.net/schema/namePerson/middle': 'middlename',  
    204  'http://openid.net/schema/contact/city/home': 'city',  
    205  'http://openid.net/schema/person/guid': 'uuid',  
    206  'http://openid.net/schema/namePerson/friendly': 'username',  
    207  'http://openid.net/schema/company/name': 'organization',  
    208  'http://openid.net/schema/contact/country/home': 'country',  
    209  'http://openid.net/schema/namePerson/first': 'firstname',  
    210  'http://openid.net/schema/namePerson/last': 'lastname',  
    211  'http://openid.net/schema/contact/internet/email': 'email', 
    212  'http://www.earthsystemgrid.org/authority': 'authority', 
    213  'http://www.earthsystemgrid.org/gateway': 'gateway', 
    214               } 
    215  
    216 esgSRegAttr = { 
    217     'nickname':'', 
    218     'email':'E-mail Address', 
    219     'country':'UK', 
    220     'language':'English', 
    221     'timezone':'BST', 
    222     } 
    223  
    224  
    225 def esgSRegResponseHandler(username): 
    226     """Interface function to OpenIdProviderMiddleware to set custom attributes 
    227     """ 
    228     attr = esgSRegAttr.copy() 
    229 #    attr['username'] = username 
    230     attr['nickname'] = username 
    231     return attr 
    232  
    233 def esgAXResponseHandler(axReq, axResp, username):   
    234     """Respond to attributes requested by Relying Party via the Attribute 
    235     Exchange interface""" 
    236     attr = esgAxAttr.copy() 
    237     attr['http://openid.net/schema/namePerson/friendly'] = username 
    238      
    239     for typeURI, attrInfo in axReq.requested_attributes.items(): 
    240         # Value input must be list type 
    241         axResp.setValues(typeURI, [attr[typeURI]]) 
Note: See TracChangeset for help on using the changeset viewer.