Java-Spring-Security-config - mehrere Authentifizierungsanbieter
Gibt es mehrere Verweise auf mehrere Authentifizierungsanbieter in spring security, aber kein Beispiel in Java-config gefunden werden konnte.
Den folgenden link, gibt die XML-notation:
Mehrere Authentifizierungsanbieter in Spring Security
Benötigen wir zur Authentifizierung verwenden der LDAP-oder DB -
Unten ist unsere Beispiel-code:
@Configuration
@EnableWebSecurity
public class XSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private AuthenticationProvider authenticationProvider;
@Autowired
private AuthenticationProvider authenticationProviderDB;
@Override
@Order(1)
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(authenticationProvider);
}
@Order(2)
protected void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
auth.authenticationProvider(authenticationProviderDB);
}
@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/scripts/**","/styles/**","/images/**","/error/**");
}
______
@Override
@Order(1)
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/","/logout","/time").permitAll()
.antMatchers("/admin").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/index")
.loginProcessingUrl("/perform_login")
.usernameParameter("email")
.passwordParameter("password")
.failureUrl("/index?failed=true")
.defaultSuccessUrl("/summary",true)
.permitAll()
.and()
.logout().logoutUrl("/logout")
.logoutSuccessUrl("/index?logout=true").permitAll()
.and()
.exceptionHandling().accessDeniedPage("/error403")
.and().authenticationProvider(authenticationProvider);
}
@Order(1)
protected void configureDB(HttpSecurity http) throws Exception {
http.csrf().disable()
.authorizeRequests()
.antMatchers("/","/logout").permitAll()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/index")
.loginProcessingUrl("/perform_login")
.usernameParameter("email")
.passwordParameter("password")
.failureUrl("/index?failed=true")
.defaultSuccessUrl("/summary",true)
.permitAll()
.authenticationProvider(authenticationProviderDB)
//This line giving compilation error stating authenticationProvider is not available in formloginconfigurer
.and()
.logout().logoutUrl("/logout")
.logoutSuccessUrl("/index?logout=true").permitAll()
.and()
.exceptionHandling().accessDeniedPage("/error403");
}
}
Rufen Sie einfach
authenticationProvider
mehrere Male mit verschiedenen AuthenticationProvider
Instanzen. Beide werden erfasst und konsultiert in der angegebenen Reihenfolge.InformationsquelleAutor Matt Jerry | 2016-02-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden kann dies wird Ihnen helfen :-
Wie funktioniert das, ohne die Referenzen
hier
.authenticated()
Authentifizierung jeder Anfrage die Sie bekommen vonantMatcher
dann wird der status gesetzt, der in seiner successHandlerIch habe versucht mit diesem code, und es funktioniert entweder nur für die ldap-oder db-und nicht beide. Es gibt keine Beispiele in spring java config, das sprechen über mehrere Authentifizierungs-Mechanismen und somit schwierig zu fahren
Dann, warum Sie nicht pflegen DB-Konfiguration und Mvc-Konfiguration separat. in so etwas wie DatabaseConfiguration Klasse und MvcConfiguration Klasse
InformationsquelleAutor ojus kulkarni
In Spring Boot dieser arbeitete für mich:
Jeder Authentifizierung Anbieter getestet ist in Ordnung. Wenn man geht, dann ist seine folgenden Authentifizierungs-Provider werden übersprungen
auth.userDetailsService(userDetailsService)...
dann:
auth.ldapAuthentication()....
InformationsquelleAutor Ryan Augustine
Dies ist eine erfolgreiche Konfiguration, die hilft, konfigurieren Sie mehrere Authentifizierungsanbieter in java-config.
Vielen Dank ojus für Ihre Eingänge. Es Tat helfen, in festzunageln das Problem.
Der Schlüssel ist
Vollständigen code unten
InformationsquelleAutor Matt Jerry