JanRain python-openid-1.2.0 and 404 on openid.server
I got a report from Bob Aman that my “blog broke”, along with the following traceback:
traceback:Traceback (most recent call last):
File "gateway.cgi", line 39, in ?
post(url)
File "/home/rubys/mombo/post.py", line 418, in post
{'name': param('name'), 'url': param('url'), 'email': param('email'),
File "/home/rubys/mombo/identity.py", line 18, in lookup
request = server.begin(id)
File "/home/rubys/python-openid-combo-20061208/python-openid-1.2.0/openid/consumer/consumer.py",
line 308, in begin
return self.beginWithoutDiscovery(service)
File "/home/rubys/python-openid-combo-20061208/python-openid-1.2.0/openid/consumer/consumer.py",
line 331, in beginWithoutDiscovery
auth_req = self.consumer.begin(service)
File "/home/rubys/python-openid-combo-20061208/python-openid-1.2.0/openid/consumer/consumer.py",
line 423, in begin
assoc = self._getAssociation(service_endpoint.server_url)
File "/home/rubys/python-openid-combo-20061208/python-openid-1.2.0/openid/consumer/consumer.py",
line 627, in _getAssociation
assoc = self._parseAssociation(
File "/home/rubys/python-openid-combo-20061208/python-openid-1.2.0/openid/consumer/consumer.py",
line 654, in _parseAssociation
assoc_type = results['assoc_type']
TypeError: unsubscriptable object
A quick search turns up nothing.
Checking Bob’s server, I find:
<link rel="openid.server"
href="http://sporkmonger.pip.verisignlabs.com/server/" />
<link rel="openid.delegate"
href="http://sporkmonger.pip.verisignlabs.com/" />
The server URI provided returns a 404, presumably as the result of a configuration error. It seems likely that https://pip.verisignlabs.com/server was what is intended. In any case, JanRain Python OpenId 1.2.0 responds rather poorly to this situation, and the following patch works around this bug:
--- openid/consumer/consumer.base 2007-07-25 08:50:10.000000000 -0400
+++ openid/consumer/consumer.py 2007-07-25 08:50:21.000000000 -0400
@@ -624,6 +624,7 @@
(str(why),))
assoc = None
else:
+ if response == None: return None # hack
assoc = self._parseAssociation(
response, assoc_session, server_url)
Now off to report the problem: done.