1

私は2つの異なるWebアプリケーションを持っています:

  • 顧客の履歴書をオフィス ユーザーに表示する CRM Web アプリケーション
  • 顧客ユーザー向けのポータル Web アプリ

私の CRM Web アプリケーションはLDAPManagerInMemoryManagerを組み合わせて使用​​しBasicAuthenticationFilterBasicAuthenticationEntryPoint 私のポータルは標準のクラシック JDBC マネージャーを使用しますUsernamePasswordAuthenticationFilter

ここで、CRM Web アプリケーションからポータルに透過的にアクセスする必要があります。

たとえば、私は CRM ウェブアプリでオフィスで働いています。顧客から電話があり、Portal に記載されている内容について説明を求められます。

オフィス ユーザーは、CRM 顧客アカウント ページの http リンクから顧客としてポータルにアクセスできます。

したがって、私はバイパスLoginUrlAuthenticationEntryPointして顧客アカウントに直接アクセスします。

マイケルの助けを借りて編集した後、どの CRM ユーザーがどのポータル アカウントにアクセスしたかを追跡する必要があることに気付きました。
の質問は次のとおりです。 - 2nd を宣言する必要がありますか? - どうですか? - 新しいポータル AbstractPreAuthenticatedProcessingFilter で、CRM Web アプリケーションから BASIC 認証されたユーザーを回復することは可能ですか?
PreAuthenticatedManagerRunAsManager
EntryPoint
AuthenticationFilters


4

1 に答える 1

0

あなたの説明から、次の仮定/結論があります。

1) CRM ユーザー リポジトリとポータル ユーザー リポジトリのユーザーが異なる

2) CRM ユーザーは、ポータル ユーザーのパスワードを知ってはいけません

RunAsManager を使用する必要はないと思います。(RunAsManager を使用する場合、最初にポータルで CRM ユーザーとして認証し、次にその認証をポータル ユーザー認証に置き換えることを意味します。ポータル ユーザー リポジトリに対して CRM ユーザーを認証することはできないと思います。)

独自の「AuthenticateAs」機能を作成することをお勧めします。CRM ユーザーがポータル ユーザーの CRM ページ内のリンクを押すと、パスワードを提供しなくてもポータル ユーザーとしてポータルで認証されます。

使い方?

1) CRM ユーザーがリンクを押すと、暗号化されたポータル ユーザー名のパラメーターが URL に追加されます。

2) 暗号化されたポータル ユーザー名でポータル アプリケーションへのアクセスを要求すると、新しく作成された PreAuthenticatedProcessingFilter がユーザー名を復号化し、ユーザーを認証します。

それでおしまい :)

いくつかのコメント:

1) ユーザー名の暗号化/復号化には AES-258 アルゴリズムを使用してください

2) 暗号化/復号化のキーが HTTP でアクセスできないことを確認してください

3) PreAuthenticatedProcessingFilter の AbstractPreAuthenticatedProcessingFilter を拡張できます

4) ポータル アプリケーションで、USER_WRITE_ROLE と USER_READ_ROLE の 2 つのロールを作成することを強くお勧めします。CRM ユーザーが「AuthenticateAs」認証を使用してアクセスすると、USER_READ_ROLE を取得する必要があります。ポータル ユーザーが通常の認証を使用してアクセスする場合、USER_WRITE_ROLE を取得する必要があります。

5) CRM ユーザーがポータル ユーザーのログアウトをどのように実行するかを考える必要があります (そうしないと、常に最初のユーザーで作業することになります)。私が考えることができる最も簡単な方法 - PreAuthenticatedProcessingFilter は各リクエストを処理する必要があり (認証された場合でも)、ポータル ユーザー セッションをクリーンアップして新しい認証を実行するためのユーザー名のパラメーターが含まれている場合。

この提案についてどう思うか、さらに説明が必要かどうか教えてください。

よろしくお願いします、

マイケル

PS質問が編集された後に追加されました。ポータルで CRM ユーザーを追跡する最も簡単な方法は、暗号化されたパラメーターを URL に CRM ユーザー名とともに追加することです。

于 2013-03-01T19:10:51.010 に答える