JanRain: python-openid : Possitive Assertion の返答 (Authentication Response )

Possitive Assertionを返す。

  • 受け取ったリクエストオブジェクト(openid.server.server.CheckIDRequest)に対してreq.answer( True , _identity_ ) をコールして応答オブジェクト(openid.server.server.OpenIDResponse)をもらう(res)。
  • resに対して必要であればエクステンション応答を付与する(オプション)。
  • サーバーオブジェクト(openid.server.server.Server)に対して、svr.encodeResponse(res)でエンコードされたウェブ応答(openid.server.server.WebResponse)を作成する。
  • webresを元にHTTP応答を返す。(Djangoだったらdjango.http.http.HttpResponse オブジェクト)

ChekIDRequestがanswerで応答オブジェクトを作る

  • return_to が無かったら例外(NoReturnToError)。
  • server_url が無かったらself.op_endpointを指定。
    • 2.0の場合でself.op_endpointが無かったら例外(RuntimeError)
  • modeを設定。(1.0は省略)
    • ユーザーが許可したらid_res (Posstive Assertion )
    • immediateリクエストであれば、setup_needed
    • それ以外はcancel
  • 返答すべきOpenIDResponseオブジェクトを生成(res)
  • Posstive Assertion パラメータを判定して設定する (判定内容の説明は省略)
    • mode,return_to , response_nonce,op_endpoint,identity,claimed_id
  • resを返して終了。

Web応答の作成

  • Serverオブジェクトは生成時にself.encoder が指定される。
  • それはデフォルトでは、SigningEncoderクラスのencoder。
    • SigningEncoderは生成時に、self.signatoryを必要とするが、それはデフォルトではSignatoryクラス。
  • self.encoder.encode(res)と指定された応答オブジェクトのWeb応答化を丸投げして返す。

SigningEncoderのWeb応答作成

  • オブジェクト生成時にSignatoryクラスのオブジェクトをself.signatoryとして指定される。
  • 応答オブジェクトが署名必須あれば、もらった応答オブジェクトをsefl.signatory.sign(res) に丸投げして署名パラメータをつけてもらう。
    • res.needsSigning() で判断します。
  • 親クラス(Encoder)のencode(res)を呼び出してWeb応答を作成。

Singatoryによる署名パラメータ作成

  • アソシエーションハンドルを元にアソシエーションを復元(self.getAssociation)。
  • アソシエーションが無かったら新規に作る(Private Association。後にRPよりVerifyリクエストを受け付けること)
  • アソシエーションオブジェクトに対して、assoc.signMessage() でフィールドを署名してもらい、それを応答オブジェクトのフィールドとする。
  • 署名つきの新しいフィールドになった応答オブジェクトを返答。

アソシエーションオブジェクトによる署名パラメータつきパラメータリスト作成

  • openid.association.Association クラス。
  • 2.0のスペックに基づいて、sig と signed を新規に作る。
  • sig は self.getMessageSignature(msg)で計算。(内容省略)
カテゴリー: 未分類 パーマリンク

コメントを残す

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

WordPress.com ロゴ

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

Twitter 画像

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

Facebook の写真

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

Google+ フォト

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

%s と連携中