# HG changeset patch # User Paul Boddie # Date 1259442987 -3600 # Node ID 02eed6f94db83a78d7be5cffba8b9226e6831cf9 # Parent 8c014bfe6b68e678cc75ff4f51b83485caefb415 Reverted local identifier changes in order to restore their URL/URI character. Introduced URL-encoding of identity information for non-ASCII characters, due to limitations in HTML 4. Introduced URL-encoding of the association handle since python-openid (2.0.2) does not like being presented with a handle containing non-ASCII characters. diff -r 8c014bfe6b68 -r 02eed6f94db8 WebStack/Resources/OpenIDLogin.py --- a/WebStack/Resources/OpenIDLogin.py Fri Nov 27 01:58:47 2009 +0100 +++ b/WebStack/Resources/OpenIDLogin.py Sat Nov 28 22:16:27 2009 +0100 @@ -63,9 +63,10 @@ def get_openid_fields(self, trans, claimed_id, local_id, username, return_to, endpoint): # Make an association that can be used in signature verification. + # NOTE: Encoding the handle to avoid problems with python-openid. # NOTE: Probably need to consider the secret key a bit more. - handle = username + str(time.time()) + handle = trans.encode_path(username, "utf-8") + str(time.time()) secret_key = str(random.randint(0, 999999999)) self.associations[handle] = secret_key diff -r 8c014bfe6b68 -r 02eed6f94db8 examples/Common/OpenIDLogin/__init__.py --- a/examples/Common/OpenIDLogin/__init__.py Fri Nov 27 01:58:47 2009 +0100 +++ b/examples/Common/OpenIDLogin/__init__.py Sat Nov 28 22:16:27 2009 +0100 @@ -7,6 +7,7 @@ from WebStack.Resources.ResourceMap import MapResource from WebStack.Resources.Static import StringResource from WebStack.Generic import ContentType +import urllib def get_site_map(app_url, deployment_url): @@ -16,17 +17,22 @@ protocol, host and port, not including any path information. """ + # NOTE: Support "special" username due to stupid HTML 4 restrictions. + + special_username = urllib.quote(u"זרו".encode("utf-8")) + login = OpenIDLoginResource( app_url=app_url, authenticator=Authenticator( credentials=( # Local identifier, username, password - (( "badger", "badger"), "abc"), - (( "vole", "vole"), "xyz"), - ((u"זרו", u"זרו"), u"ֶ״ֵ"), - (( "badger2", "badger"), "abc"), - (( "vole2", "vole"), "xyz"), - ((u"זרו2", u"זרו"), u"ֶ״ֵ"), + ((deployment_url + "/badger", "badger"), "abc"), + ((deployment_url + "/vole", "vole"), "xyz"), + ((deployment_url + u"/זרו", u"זרו"), u"ֶ״ֵ"), + ((deployment_url + "/badger2", "badger"), "abc"), + ((deployment_url + "/vole2", "vole"), "xyz"), + ((deployment_url + u"/זרו2", u"זרו"), u"ֶ״ֵ"), + ((deployment_url + "/" + special_username, u"זרו"), u"ֶ״ֵ"), ) ) ) @@ -43,42 +49,42 @@ - + Badger's Home Page

Home page for the OpenID authenticated user, badger.

- """ % deployment_url, ContentType("text/html")), + """ % (deployment_url, deployment_url), ContentType("text/html")), u"זרו" : StringResource(u""" - + Home Page for זרו

Home page for the OpenID authenticated user, זרו.

- """ % deployment_url, ContentType("text/html", "iso-8859-1")), + """ % (deployment_url, deployment_url, special_username), ContentType("text/html", "iso-8859-1")), "vole" : StringResource(""" - + Vole's Home Page

Home page for the OpenID authenticated user, vole.

- """ % deployment_url, ContentType("text/html")), + """ % (deployment_url, deployment_url), ContentType("text/html")), # OpenID 2.0 resources. # See: http://docs.oasis-open.org/xri/2.0/specs/cd02/xri-resolution-V2.0-cd-02.html#_Ref129424065 @@ -92,27 +98,27 @@ http://specs.openid.net/auth/2.0/signon %s/login - badger2 + %s/badger2 - """ % deployment_url, ContentType("application/xrd+xml")), + """ % (deployment_url, deployment_url), ContentType("application/xrd+xml")), u"זרו2" : StringResource(u""" http://specs.openid.net/auth/2.0/signon %s/login - זרו2 + %s/זרו2 - """ % deployment_url, ContentType("application/xrd+xml", "iso-8859-1")), + """ % (deployment_url, deployment_url), ContentType("application/xrd+xml", "iso-8859-1")), "vole2" : StringResource(""" http://specs.openid.net/auth/2.0/signon %s/login - vole2 + %s/vole2 - """ % deployment_url, ContentType("application/xrd+xml")), + """ % (deployment_url, deployment_url), ContentType("application/xrd+xml")), }) # vim: tabstop=4 expandtab shiftwidth=4