3

ここでの最初の投稿、私が正しくやっているといいのですが。

プロジェクトには、複数のエンティティを持つ単一の Web アプリケーションがあるシナリオがあります。現在、ログインはデフォルトの JDBC Spring Security プロバイダーを介して管理されており、正常に機能しています。

新しい要件では、各エンティティが独自のログイン方法を持つことができる必要があります (現在、2 つの方法が利用可能です。現在の JDBC の方法と、2 番目の方法は SAML による認証であり、各エンティティは独自のログイン方法を定義します)。 IdP ですが、これは別の話です)

これを実現する方法についてのガイドラインが必要です。検索を行ったところ、さまざまな URL のプロバイダーが見つかりました。

エンティティ ユーザーを確認し、適切な認証プロバイダーを使用できるカスタムの単一のエントリ ポイントを持つことは良い方法ですか?

敬具、

アレックス

4

1 に答える 1

3

各ユーザーが異なる IDP を使用している可能性があるため、認証プロセスの初期化に進む前にユーザー名を特定する必要がありますが、これは既にわかっています。

取るべきアプローチの 1 つ (Microsoft が企業ユーザー向けの Office 365 で使用しているものと同様) は次のとおりです。

  • 標準のユーザー名とパスワードのフィールドを含むログイン ページを表示する
  • ユーザーがユーザー名を入力して入力フィールドをぼかしたら、(この目的のために作成されたカスタム API に対して) AJAX 呼び出しを行い、このユーザーに使用する認証タイプ + IDP に関する情報をフェッチします。
  • タイプがパスワードの場合は、ユーザーがパスワード フィールドへの入力を続行し、JDBC プロバイダーでの処理に慣れているのと同じ場所に POST するだけです。
  • タイプがフェデレーション認証の場合は、/saml/login?idp=xyz にリダイレクトして正しい IDP で認証を初期化し、SAML フローを続行します。

ユーザーがユーザー名を入力したらフォームを送信するか、ユーザーに [続行] ボタンをクリックさせることで、API を回避することができます。次に、次のようなカスタム EntryPoint を使用することは理にかなっています。

  • ユーザー名が提供されなかった場合に、ユーザーをメインのログインページにリダイレクトします
  • ユーザー名/パスワードを使用してログイン ページを表示するか、ユーザー名が提供されると、正しい IDP にリダイレクトします
于 2014-10-24T18:12:40.643 に答える