注: 私のアプリケーションは、Spring フレームワークの最新バージョンである 4.0.6、3.2.4 をセキュリティのために使用しており、xml を使用せずに Java-Config のみを使用してアプリケーションを構成しています。
役割やその他のビジネス固有の承認条件で保護したい一連のサービスがあります。このサービスは、REST アプリケーションと Web アプリケーションで使用されるモジュール (jar) にグループ化されます。私はすでにAuthenticationProvider
Web アプリケーションに を持っています (REST アプリケーションは初期段階にあります)。@EnableGlobalMethodSecurity
Web アプリケーションで使用します。そうは言っても、サービスのメソッドも保護する必要があります。その場合、別の認証プロバイダーを提供する必要がありますか? または、認証プロバイダーをサービス モジュールに移動して、Web/Rest アプリがサービス jar の認証プロバイダーを使用するのは正しいですか? サービス モジュールの ApplicationServiceConfig.java で構成@EnableGlobalMethodSecurity
すると、ブロー例外が発生します。
com.name.mvoice.project.service.ApplicationServiceConfig: Invocation of init method failed; nested exception is java.lang.IllegalArgumentException: An AuthenticationManager is required
アプリケーションが RDBMS からの認証と LDAP からの認証の二重認証を必要とする場合、どのようにセキュリティーを構成すればよいですか。条件は、ユーザー情報が存在し、両方のシステムで有効になっている必要があります。これを既存の認証マネージャー自体に記述する必要がありますか?それとも LDAP 用に別の認証プロバイダーを用意する必要がありますか? もしそうなら、どのように?
WebSecurityConfig.java
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth)
throws Exception {
AuthenticationProvider dbAuthenticationProvider = new DatabaseAuthenticationProvider();
auth.authenticationProvider(dbAuthenticationProvider );
// is it right to do like this
AuthenticationProvider ldapAuthenticationProvider = new LDAPAuthenticationProvider();
auth.authenticationProvider(ldapAuthenticationProvider );
}
ただし、AuthenticationManagerBuilder.authenticationProvider
提供された認証プロバイダーがリストに追加されているようです!