Changeset 4549
- Timestamp:
- 05/12/08 16:38:20 (12 years ago)
- Location:
- TI12-security/trunk/python
- Files:
-
- 2 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
TI12-security/trunk/python/ndg.security.server/ndg/security/server/wsgi/openid/provider/__init__.py
r4545 r4549 1118 1118 return [] 1119 1119 1120 1121 class RenderingInterfaceError(Exception): 1122 """Base class for RenderingInterface exceptions 1123 1124 A standard message is raised set by the msg class variable but the actual 1125 exception details are logged to the error log. The use of a standard 1126 message enables callers to use its content for user error messages. 1127 1128 @type msg: basestring 1129 @cvar msg: standard message to be raised for this exception""" 1130 userMsg = ("An internal error occurred with the page layout, Please " 1131 "contact your system administrator") 1132 errorMsg = "RenderingInterface error" 1133 1134 def __init__(self, *arg, **kw): 1135 if len(arg) > 0: 1136 msg = arg[0] 1137 else: 1138 msg = self.__class__.errorMsg 1139 1140 log.error(msg) 1141 Exception.__init__(self, msg, **kw) 1142 1143 class RenderingInterfaceInitError(RenderingInterfaceError): 1144 """Error with initialisation of RenderingInterface. Raise from __init__""" 1145 errorMsg = "RenderingInterface initialisation error" 1146 1147 class RenderingInterfaceConfigError(RenderingInterfaceError): 1148 """Error with Authentication configuration. Raise from __init__""" 1149 errorMsg = "RenderingInterface configuration error" 1120 1150 1121 1151 class RenderingInterface(object): -
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 2 OpenIDProviderMiddleware 4 3 5 4 NERC Data Grid Project … … 16 15 from pylons.templating import Buffet 17 16 from pylons import config 18 import ndg.security.server.sso.sso.lib.helpers as h19 17 import logging 20 18 log = logging.getLogger(__name__) 19 20 from ndg.security.server.wsgi.openid.provider import RenderingInterface, \ 21 AuthNInterfaceConfigError 21 22 22 23 # Boiler plate to create renderer … … 73 74 from ndg.security.server.wsgi.openid.provider import RenderingInterface 74 75 75 class OpenIDProviderKidRendering(RenderingInterface):76 """Provide KidTemplating for OpenID Provider Middleware via Buffet76 class BuffetRendering(RenderingInterface): 77 """Provide Templating for OpenID Provider Middleware via Buffet 77 78 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): 81 92 '''Wrapper for Buffet.render''' 82 rendering = buffet.render(template_name=templateName, namespace=kw) 93 rendering = self._buffet.render(template_name=templateName, 94 namespace=kw) 83 95 return rendering 84 96 85 97 def login(self, environ, start_response, success_to=None, fail_to=None, 86 98 msg=''): 87 """Set-up Kidtemplate for OpenID Provider Login"""99 """Set-up template for OpenID Provider Login""" 88 100 c = State(urls=self.urls, session=self.session) 89 101 c.title = "OpenID Login" … … 92 104 c.xml = msg 93 105 94 response = OpenIDProviderKidRendering._render('ndg.security.login',95 106 response = BuffetRendering._render('ndg.security.login', 107 c=c, g=config, h=h) 96 108 start_response('200 OK', 97 109 [('Content-type', 'text/html'+self.charset), … … 101 113 102 114 def mainPage(self, environ, start_response): 103 """Set-up Kidtemplate for OpenID Provider Login"""115 """Set-up template for OpenID Provider Login""" 104 116 c = State(urls=self.urls, session=self.session) 105 117 c.title = "OpenID Provider" … … 107 119 self.urls['url_serveryadis'] 108 120 109 response = OpenIDProviderKidRendering._render('ndg.security.mainPage',110 121 response = BuffetRendering._render('ndg.security.mainPage', 122 c=c, g=config, h=h) 111 123 start_response('200 OK', 112 124 [('Content-type', 'text/html'+self.charset), … … 118 130 path = environ['PATH_INFO'].rstrip('/') 119 131 idPath = self.urls['url_id'].replace(self.base_url, '') 120 user name= path[len(idPath)+1:]121 if not user name:132 userIdentifier = path[len(idPath)+1:] 133 if not userIdentifier: 122 134 h.redirect_to(self.urls['url_mainpage']) 123 135 … … 129 141 130 142 yadis_loc_tag = '<meta http-equiv="x-xrds-location" content="%s"/>' % \ 131 (self.urls['url_yadis']+'/'+user name)143 (self.urls['url_yadis']+'/'+userIdentifier) 132 144 133 145 c.headExtras = link_tag + yadis_loc_tag … … 135 147 c.xml = "<b><pre>%s</pre></b>" % identityURL 136 148 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) 140 151 start_response("200 OK", 141 152 [('Content-type', 'text/html'+self.charset), … … 152 163 c.oidRequest = oidRequest 153 164 154 response= OpenIDProviderKidRendering._render('ndg.security.decidePage',155 165 response=BuffetRendering._render('ndg.security.decidePage', 166 c=c, g=config, h=h) 156 167 start_response("200 OK", 157 168 [('Content-type', 'text/html'+self.charset), … … 167 178 [('Content-type', 'text/html'+self.charset), 168 179 ('Content-length', str(len(response)))]) 169 response = OpenIDProviderKidRendering._render('ndg.security.error',170 180 response = BuffetRendering._render('ndg.security.error', 181 c=c, g=config, h=h) 171 182 return response 172 173 # Earth System Grid interoperability tests174 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 attributes227 """228 attr = esgSRegAttr.copy()229 # attr['username'] = username230 attr['nickname'] = username231 return attr232 233 def esgAXResponseHandler(axReq, axResp, username):234 """Respond to attributes requested by Relying Party via the Attribute235 Exchange interface"""236 attr = esgAxAttr.copy()237 attr['http://openid.net/schema/namePerson/friendly'] = username238 239 for typeURI, attrInfo in axReq.requested_attributes.items():240 # Value input must be list type241 axResp.setValues(typeURI, [attr[typeURI]]) -
TI12-security/trunk/python/ndg.security.test/ndg/security/test/combinedservices/services.ini
r4545 r4549 326 326 #openid.provider.consumer_store_dirpath=./ 327 327 openid.provider.trace=False 328 #openid.provider.renderingClass=ndg.security.server.pylons.container.lib.openid_provider_util.OpenIDProviderKidRendering 329 openid.provider.renderingClass=ndg.security.server.wsgi.openid.provider.DemoRenderingInterface 330 openid.provider.sregResponseHandler=ndg.security.server.pylons.container.lib.openid_provider_util:esgSRegResponseHandler 331 openid.provider.axResponseHandler=ndg.security.server.pylons.container.lib.openid_provider_util:esgAXResponseHandler 328 openid.provider.renderingClass=ndg.security.server.wsgi.openid.provider.renderinginterface.buffet.BuffetRendering 329 #openid.provider.renderingClass=ndg.security.server.wsgi.openid.provider.DemoRenderingInterface 330 331 openid.provider.rendering.templateType = kid 332 openid.provider.rendering.templateRoot = ndg.security.server.pylons.container.templates 333 334 # Layout 335 openid.provider.rendering.server = http://localhost:8000 336 openid.provider.rendering.LeftLogo = %(server)s/layout/NERC_Logo.gif 337 openid.provider.rendering.LeftAlt = Natural Environment Research Council 338 openid.provider.rendering.ndgLink = http://ndg.nerc.ac.uk/ 339 openid.provider.rendering.ndgImage = %(server)s/layout/ndg_logo_circle.gif 340 openid.provider.rendering.disclaimer = This site is for test purposes only and is under active development. 341 openid.provider.rendering.stfcLink = http://ceda.stfc.ac.uk/ 342 openid.provider.rendering.stfcImage = %(server)s/layout/stfc-circle-sm.gif 343 openid.provider.rendering.helpIcon = %(server)s/layout/icons/help.png 344 345 346 #openid.provider.sregResponseHandler=ndg.security.server.pylons.container.lib.openid_provider_util:esgSRegResponseHandler 347 #openid.provider.axResponseHandler=ndg.security.server.pylons.container.lib.openid_provider_util:esgAXResponseHandler 332 348 333 349 # Basic Authentication interface to demonstrate capabilities
Note: See TracChangeset
for help on using the changeset viewer.