2009-06-24 10 views
2

ここにセットアップがあります: 私はサーバーベースのアプリケーションを持っています。したがって、すべてのデータはサーバー上にあり(サーバー 'A'と呼ばれます)、ユーザーはデスクトップベースのリッチクライアントを使用してそのサーバーに接続します。リッチクライアントでは、サーバーAとはまったく関係のない別のサーバー(「X」と呼ぶ)に接続することもできます。2人の異なるクライアントが何とかクッキーを共有できますか?

質問: リッチクライアントからサーバーXにログインしましたが、リッチクライアントはサーバーXに対して認証するための正しいクッキーを持っています。ユーザーはサーバーAで呼び出しを行い、サーバーAからサーバーXへデータを取得する必要があります。リッチクライアントが既にサーバーXに対して認証されていることを前提に、サーバーXに対して認証を行います。(サーバーAを第2のクライアントとして機能させて)クッキーを共有する方法はありますか?または、サーバーにフォワードサーバーXの認証要求をリッチクライアントに戻し、リッチクライアントのクッキーに対して解決させる方法。ところで、私たちはApacheのHttpClientを使用します。

私は、サーバーとの相互作用について非常に精通していないですが、それはこのような何かをすることがいかに難しい/簡単または共通/レアゲージしようとしています。これを安全な方法で行うことも可能ですか?基本的なレベルでは

+2

私はMarthaStewart.comでその質問をするように誘惑されます。 – Nosredna

+0

あまりにもあなたのコメントをupvoteできません。 :) – Pratik

答えて

1

、すべてのHTTP通信は、クライアントとサーバーの間で前後に渡されるテキストデータです。したがって、Server Xの応答からCookieを抽出し、その要求をServer Aに渡した場合、AがCookieデータを抽出し、CookieをServer Xへの新しい要求に挿入することが分かっている限り、成功します。あなたが求めているものを達成する。一言で言えば

...クッキーは、単にサーバとクライアントの間で前後に渡されるテキストデータです。そのデータを取得し、好きな場所に渡すことができます。

が...しかし、多くのサーバがリクエストフォージェリ攻撃と...異なっているリモートホスト、クライアントのIP、などということについて賢くなっている(おそらくしかし、セキュリティのベストプラクティスの多くを破壊するだろう)要求を無効にするか、少なくともサーバーXを警告する可能性があります。したがって、戦略の実行可能性に関するブランケットの仮定を行う前に、すべてのテスト/ステージ/プロダクトプラットフォームで完全にテストしてください。

0

あなたは[はい、必ず「リッチクライアント」の動作をコントロールしている場合。あなたが設定しようとしているユーザログイントラッキングクッキーが含まれていれば、アクセスしようとしているサーバのクッキーを見てください。そうでなければ、他のサーバのクッキーを見て、そこに存在する場合は、そのサーバー用に作成しようとしているリクエストのクッキープールにあります。あなたがユーザーを共有しようとしているので、

はおそらく、2台のサーバーを使用すると、これらのクッキーに使用している共通のユーザーIDまたは他のハッシュを持っているユーザデータベースを共有しています。

これとは逆に、現在トラッキングしている唯一のユーザーは基本的にセッションベースで、セッションのハッシュが含まれており、そのセッションはサーバー側に保存されます。セッションストアでは、クライアント側から同じCookieを単純に渡すことはできません。

関連する問題