You can almost but not quite create an OpenID consumer on Google App Engine today using python-openid.
Unfortunately, redirects to external OpenID providers are failing and Google currently does not think that this is a high priority to fix (this is where you can help, read on.)
Ryan from the Google App Engine team had this to say:
We do intercept some redirects for security reasons, which breaks apps like openid consumers and providers. This is why http://openid-provider.appspot.com/ currently fails on many consumers.
It's not a high priority, but we do plan to look into this eventually. Feel free to file an issue on the issue tracker and star it; if it gets enough votes, that will help convince us to prioritize the fix!
Ryan even has an open source OpenID consumer example* that would be working if it wasn't for this bug.
Read this thread on the forums for all the juicy details.
How you can help
There is already an issue where this is being discussed: Issue 17 - OpenID Support Issue 404 (When urlfetch.fetch is used to retrieve redirected web page, the new URL location is not given).
Please _star_ this issue to show your support and join the conversation on the forum.
*
svn checkout http://google-app-engine-samples.googlecode.com/svn/trunk/ google-app-engine-samples-read-only to get the OpenID consumer example as well as the other Google App Engine examples.
The OpenID on Google App Engine (and how you can help make it happen!) article by Aral Balkan, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Noncommercial 2.0 UK: England License.
Aral, I starred the issue, but you may want to create another issue. The language of that one seems to be requesting that OpenID authentication be integrated with the Google accounts-based authentication system. Really, for that to happen, they would probably need to start allowing OpenID Google-wide.
Whereas this smaller problem (and probably a number of others) can be solved by allowing the redirects.
Hi Alex,
Thanks, I mentioned that in the thread and I’m waiting to see what the GAE team come back to me with. I think a new issue would be good too but there are currently a few open and I don’t want to flood the issue tracker.
You can get it to work using a meta tag redirect instead of a 302 redirect. Rather than calling self.redirect(location), Just render a page that has a meta tag with refresh=0 and content=location. Here’s code that works:
http://code.google.com/p/demand
and it running live on appengine:
http://demand.openid.net/