JanRain: python-openid : Relying Partyが認証リクエストをブラウザ経由で飛ばすまで。

1. RPのAuthentication Requestの飛ばし方

2.openid.consumer.consumer.Consumerのコンストラクタ

3.begin()の実装

  • アソシエーション(openid.association.Associationクラス)をストアから復元(_self._getAssociation(endpoint) )。
  • 復元された(されない場合はNone)アソシエーションを指定してopenid.consumer.consumer.AuthRequestオブジェクト(request)を生成。
  • requestのランダム生成したNonceを設定。
  • requestを返す。

4.アソシエーションの復元

  • 指定されたエンドポイントのURLに対応するアソシエーションをストア(self.store)から取り出す(self.store.getAssociation )
  • 取り出して問題なかったらそれを返して終了。
  • もしもアソシエーションがストアに無い、あるいは期限切れであればアソシエーションをOPに対して要求(self._negotiateAssociation)する。
  • アソシエーションをOPから返答されたらそれをストアに保存する。(self.store.storeAssociation)
  • 返答されてもされなくても(None) 返して終了。

5.OPへのアソシエーション要求

  • エンドポイント、アソシエーションタイプ、セッションタイプを指定してアソシエーション要求を実際に行う(self._requestAssociation)。
  • 受け取った応答にアソシエーションが無くて、OPがサポートされているアソシエーションタイプが指定されていたらそのアソシエーションタイプで再度要求。
  • アソシエーションを返して終了(Noneもあり)。

6.実際のアソシエーション要求

  • 指定されたエンドポイント、アソシエーションタイプ、セッションタイプでアソシエーションリクエストメッセージオブジェクト(openid.message.Message)を生成する(self._createAssociateRequest)。
  • 生成されたリクエストメッセージオブジェクトをHTTP(S) POSTでOPエンドポイントにダイレクトコールする。(self._makeKVPost)
  • ダイレクトコールの応答(openid.message.Message)にアソシエーションパラメーターが入っているので、それからアソシエーションオブジェクト(openid.association.Associationクラス)を復元する(self._extractSupportedAssociationType)。
  • 復元できたアソシエーションオブジェクトを返して終了。(受け取れない、復元できない、不正パラメータなどのエラーの場合はNone)
カテゴリー: 未分類 パーマリンク

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中