質問

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

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

私の質問は、XRDS の場所 (X-XRDS-location) を取得するために cURL リクエストを作成し、実際の XRDS ドキュメントを取得するために別の cURL リクエストを作成する必要があるかということです。

DUMB リクエストでは、cURL リクエストを 1 つ作成するだけで Open Id サーバーを取得できるようですが、XRDS Smart メソッドを使用するには 2 つ作成する必要があります。正しくないようです。他の人が私に情報を提供できますか。

役に立ちましたか?

解決

は、完全なものにするには、はい、URLでごRPなければならないHTTP GETは、ユーザーがあなたを与え、その後、XRDSドキュメントの参照を検索し、見つかった場合は、そこから別のHTTP GETを実行します。 XRDSが別のサーバーでホストすることができるので、それは同じ接続ではないかもしれないので、2つの要求の間で同じになるように接続を必要とするものをコーディングしないことに注意してください。

あなたの初期のHTTP GETリクエストには、HTTPヘッダーを含める場合:

Accept: application/xrds+xml

次に、ページはXRDSドキュメントではなく、あなたがXRDSリンクに解析する必要がHTML文書に即座に応答することができます。あなたは、そのContent-Typeヘッダにアプリケーション/ XRDS + xmlのためのHTTPレスポンスヘッダをチェックすることで、これが発生したことを検出することができます。 RPは一般的に、第2のHTTP GET呼び出しを行う必要がないようにこれが最適である - しかし、あなたはそれが起こっに頼ることはできません。

他のヒント

私はあなたを与えることができる最高のアドバイスは、少しを要求し、その後、2回だけHTTPリクエストを行うための全体のプロセスを経るあなたのHTTP抽象化しようとすることです。

あなたは持続的な接続を使用して、物事をスピードアップしたい場合は、周りのあなたのカールのインスタンスを維持することができ、それによってはあなたが望む希望されない場合があります。

私はこのことができます願っていて、幸運... OpenIDのは)=私はWebDAVのため、遭遇した最も大型で複雑なWeb標準の一つである

エバート

私がここでのゲームに遅れていることはわかっていますが、こちらもチェックしたほうがいいと思います ウェブフィンガープロトコル. 。標準の「ユーザー ID として電子メール」パターンを採用し、そこから検索を実行して openid などを検出できるようにします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top