2017-01-06 5 views
1

普通のHTTP基本認証を使用するspringbootアプリケーションはspring-security-ldapです。認証の2つのメカニズム:KerberosとHTTPの基本

その後、spring-security-kerberos-corespring-security-kerberos-webを使用してシングルサインオン(Kerberos)認証を使用するように変更しました。

これまでのところすべてうまくいきました。

これで両方のメカニズムを使用する必要があります。このアイデアは、ユーザーが自動的にログインするように、フロントエンドアプリケーションにSSOを使用することです。また、RESTインターフェースやテストにHTTP基本(ユーザー名/パスワード)を使用することもできます。

2つのエントリポイントが必要です(SSOの場合は「/ login」、HTTPの場合は「/ login-userpass」など)。それは正しいアプローチですか?あるいは、それを実装する他の方法がありますか?

一般的な要件だと思われますが、これを実装する方法の例は見つけられません。

編集: 実際にはduplicated questionです。そして受け入れられた答えは完全に働く。

答えて

1

私はSpringでKerberosを使用していませんが、以前は基本、フォーム、CA SSOの両方でアプリケーションを実装していました。しかし、いくつかのコード、特にWebSecurityConfigurerAdapterを見ることなく、私は一般的なguidlinesを与えることができます。

春には、さまざまなURLにマップされた多数の認証フィルタが必要です。これらはログインを傍受し、必要に応じて挑戦し、認証されていない認証インスタンスを作成します。典型的なフィルタはBasicAuthenticationFilterとUsernamePasswordAuthenticationFilterであり、KerBerosのフィルタを見つける必要があります。

その後、認証されていない認証は、認証を実行するために適切なAuthenticationProviderを見つけるAuthenticationProviderManagerに与えられます。ここでパスワードハッシュ(潜在的にSSOコールバック)を使用してデータベースクエリを行い、ユーザーが認証された場合は新しい認証を作成します。通常、AbstractAuthenticationTokenを拡張するか、既存の認証の1つを選択します。認証されていない認証の詳細をコピーすることを忘れないでください。

Spring 4では、AuthenticationManagerBuilderを使用してAuthenticationProviderを設定します。これは、オーバーライドする必要があるWebSecurityConfigurerAdapterのconfigureメソッドで行われます。

必要に応じて、1つのフィルタと多数の認証プロバイダまたは多数のフィルタと1つのAuthenticationProviderを持つことができます。

私は現時点でアクセスできるアプリケーションは1つのフォームのログインを持っていますが、いくつかの追加の隠しフィールド(およびセッションの内容)は、4人の利用可能なAuthenticationProviderのどれが認証を担当するのか、どのプロバイダがユーザを認証したかに基づいて作成されるため、アプリケーションの一部の領域を特定の認証タイプに制限することができます。

+0

ありがとうございました。はい、私は一般的な仕組みを理解していますが、私は実際に詳細をすべて見ることができるコードを必要とします。 –