3

私はOpenIdを使用しており、自分のサイト(PHP)でOpenIdを相互作用/認証するためのクラスを作成して遊んでいます。他にもいくつかのライブラリ(RPXなど)があることは知っていますが、自分のライブラリを使用したいと思います(プロトコルをよりよく理解し、それが自分に適しているかどうかを理解するのに役立ちます)。

私が持っている質問は、OpenId検出シーケンスに関連しています。基本的に、XRDSドキュメントを使用して、要求されたID(openid.claimed_id)からローカルID(openid.identity)を取得することを検討しているところに到達しました。

私の質問は、XRDSロケーション(X-XRDS-location)を取得するためにcURLリクエストを作成してから、実際のXRDSドキュメントを取得するために別のcURLリクエストを作成する必要があるかどうかです。

DUMBリクエストでは、cURLリクエストを1つだけ作成してOpen Id Serverを取得するようですが、XRDSSmartメソッドを使用するには2つ作成する必要があります。正しくないようですが、他の誰かが私にいくつかの情報を教えてもらえますか?

4

3 に答える 3

2

完了するには、はい、RPはユーザーが指定したURLでHTTP GETを実行し、XRDSドキュメント参照を検索し、見つかった場合はそこから別のHTTPGETを実行する必要があります。XRDSは別のサーバーでホストされている可能性があることに注意してください。同じ接続ではない可能性があるため、2つのリクエスト間で接続が同じである必要があるものはコーディングしないでください。

最初のHTTPGETリクエストに、HTTPヘッダーを含める場合:

Accept: application/xrds+xml

次に、ページは、XRDSリンクを解析する必要があるHTMLドキュメントではなく、XRDSドキュメントですぐに応答する場合があります。Content-Typeヘッダーのapplication/xrds + xmlのHTTP応答ヘッダーをチェックすることで、これが発生したことを検出できます。これは最適化であるため、RPは通常2回目のHTTP GET呼び出しを行う必要はありませんが、その発生を信頼することはできません。

于 2009-04-24T15:24:49.497 に答える
0

私があなたに与えることができる最善のアドバイスは、HTTPリクエストを少し抽象化してから、HTTPリクエストを2回実行するプロセス全体を実行することです。

持続的接続を使用して処理を高速化したい場合は、curlインスタンスを維持できますが、それが必要な場合とそうでない場合があります。

これがお役に立てば幸いです。OpenIDは、WebDAV以降に出くわした中で最もかさばる複雑なWeb標準の1つです=)

エバート

于 2009-04-23T14:18:00.410 に答える
0

私はここでゲームに遅れていることを知っていますが、webfingerプロトコルもチェックする必要があると思います。これは、標準の「ユーザーIDとしての電子メール」パターンを取り、そこからルックアップを実行して、openidなどを検出できます。

于 2010-06-03T00:41:15.747 に答える