JanRain : python-openid : Associationリクエストの処理

Associationリクエストの処理

  • リクエストを受け付けると、openid.server.server.AssociateRequestがデコードされる(req)。
  • UIを伴わないダイレクトコールなので、Server(openid.server.server.Server)オブジェクト(s)にリクエスト処理(s.handleRequest(req))を任せる。
  • サーバーオブジェクトのリクエスト処理の結果、openid.server.server.OpenIDResponseオブジェクトが変えるので、それを適切なビューにレンダリングして返す。

Serverオブジェクトのリクエスト処理

  • 指定されたリクエストのハンドラーメソッドを決定。 handler=“openid_”+ req.mode がメソッドシグネチャ。Associationの場合はopenid_associate。
  • Serverクラスにハンドラーメソッドが見つかった場合、self.handler(req)に処理を委任。
    • 見つからなかった場合、NotImplementedError例外。
  • self.handler(req)は最終的にreq.answer(parameter)を呼び出して、openid.server.server.OpenIDResponseを返して終了。

Assocationのハンドラ : Server.openid_associate()

  • Serverのコンストラクタで設定されたself.negotiatorに対して、アソシエーションタイプとセッションタイプを指定してリクエストが受け付けられるかどうかを判断。
  • もしも受け付け可能であれば、コンストラクタで設定されたself.signatoryに対してアソシエーションを作るように委任。
  • 作成されたアソシエーションを指定してreq.answer(アソシエーション)を呼び出して、OpenIDResponseを返す。

ネゴシエータ

  • Serverのネゴシエータはopenid.association.default_negotiatorがコピーされて使われる。
  • openid.association.SessionNegotiator が実際のネゴシエータ。
  • openid.association.SessionNegotiator.isAllowed はアソシエーションタイプとセッションタイプの組がサポートされているかどうかを確認する。
  • そして、アソシエーションタイプからセッションタイプをみてそれが指定されたセッションタイプに等しいか判定。
  • 両方OKの場合許可。

Signatory

  • openid.server.server.Signatoryクラスがデフォルトです。
  • アソシーエションを作ったり、アソシエーションを元に署名関連の処理を行ったりします。
  • 詳細はまた。
カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中