3

Java + Tomcat/JBoss を使用して OpenID プロバイダー (「OP」) を実装することを検討しています。

OpenID の重要な点の 1 つは、

  1. ユーザーは OP と RP の両方と通信し、両方のサイトとセッションを確立します。
  2. OP と RP は互いに通信して、ユーザーが偽造していないことを確認します。

ドキュメントを見つけることができなかった主題は、負荷分散された状況でこれを正しく実装する方法に関する質問です。

私が恐れている一般的な問題は、RP が OP に接続し、ユーザーとは異なるアプリケーション サーバーに到達することです。

私の質問:

  • これを処理する正しい方法は何ですか?
  • 使用する「最適な」OpenID ライブラリは何ですか?

ありがとう。

4

2 に答える 2

2

私が恐れている一般的な問題は、RPがOPに接続し、ユーザーとは異なるアプリケーションサーバーに接続されることです。

会話の状態を共有ストレージに保存します。つまり、データベースまたは分散キャッシュ。キャッシュはより高速になり、とにかく多くの永続性は必要ありません。

スティッキーセッション(同じクライアントからの結果として生じるすべての要求が同じサーバーに送信される)を使用した負荷分散により、キャッシュの更新回数が減ります。

(最初にアドバイスしようとしたクラスター化されたHTTPセッションは、ユーザーとアプリケーションの2つのセッション間で同じ会話が分散されるため、機能しませんでした。)

于 2009-06-02T17:07:11.933 に答える
1

OP側では、クラスター内のマシン間で実際に共有する必要があるOpenID固有の状態は、関連付け(共有シークレットとそのハンドル)のみです。そして、それはかなりキャッシュ可能です。特定のアソシエーションハンドルのシークレットは変更されることはなく、有効期間は明確に定義されており、それほど多くはないはずです。(おそらく、ステートレスモードを使用するいくつかの大容量RPで操作する場合を除きます。)

機能セットとユーザーインターフェイスによっては、ユーザーのセッション状態が他にもある場合がありますが、それを直接RP-OP通信に適用する必要はなく、標準のトリックを使用できます。

于 2009-06-03T22:18:12.640 に答える