wsgiauthでopenid

wsgiauthはopenid認証にも対応してます。

そのまま使おうとしても足りないものがいくつか。
- python-openid
- python-urljr
- python-yadis
以上のモジュールが必要。
pypiに登録されてるのでeasy_installですぐ入れられます。

簡単な使い方

from wsgiauth.openID import openid
@openid("/Users/aodag/openidstore")
def app(environment, start_response):
    start_response("200 OK", [("Content-type", "text/html")])
    return ["Hello, %s!" % environment["REMOTE_USER"]]


port = 8000
httpd = make_server('', port, app)
httpd.serve_forever()

openidの引数には、ディレクトリを指定します。
このディレクトリは、openidの認証内容やなんか一時的な情報とか置くらしいです。

で、実行して、アクセスすると、非常に簡素な入力フォームが出てくるので、自分のopenidを入れると、openidサーバーにリダイレクトされます。
そして、認証許可すると、wsgiアプリに戻ってきます。
認証したユーザーの情報はREMOTE_USERで取得できます。