Ich versuche auf meine Spring-Boot-Anwendung mit Oauth2-Authentifizierung mit angular2 zuzugreifen. Wenn ich eine Post-Anfrage an "oauth/token" mit meiner grundlegenden Authentifizierung einschließlich Benutzername und Passwort senden, um ein Token zu erhalten, das im Postboten gut funktioniert, bekomme ich eine 401 Unauthorized. Ich weiß, dass mein Browser eine Preflight-Anfrage mit der OPTIONS-Methode sendet, und ich habe meine Sicherheitskonfiguration so implementiert, dass sie die Optionswünsche ignorieren und zulassen sollte, aber es funktioniert nicht.Nicht autorisierte OPTIONS-Anfrage
Hier ist meine sicherheits Konfiguration:
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
@EnableWebSecurity
@Order(SecurityProperties.ACCESS_OVERRIDE_ORDER)
public class OAuth2SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Autowired
private ClientDetailsService clientDetailsService;
@Autowired
DataSource dataSource;
@Autowired
public void globalUserDetails(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(dataSource)
.usersByUsernameQuery(
"select username, password, 1 from users where username = ?")
.authoritiesByUsernameQuery(
"select u.username, r.name from users u, roles r, role_users ru "
+ "where u.username = ? and u.id = ru.users_id and ru.roles_id = r.id ");
auth.inMemoryAuthentication()
.withUser("admin").password("admin").roles("ADMIN");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
.anonymous().disable()
.authorizeRequests()
.antMatchers(HttpMethod.OPTIONS, "/oauth/token").permitAll();
}
@Override
public void configure(WebSecurity web) throws Exception {
web.ignoring().antMatchers(HttpMethod.OPTIONS,"/oauth/token");
}
@Override
@Bean
public AuthenticationManager authenticationManagerBean() throws Exception {
return super.authenticationManagerBean();
}
}
Vor allem die letzte configure-Methode sollte mir erlauben die API zugreifen und ein Token erhalten.
Was könnte das Problem sein? Danke für die Hilfe.
https://stackoverflow.com/questions/30366405/how-to-disable-spring-security-for-particular-url versuchen, 'anonymous(). Disable()' – StanislavL
zu entfernen, leider hat es nicht funktioniert –
danke für Ihre Hilfe. Es funktioniert entweder mit oder ohne anonymous(). disable(). Ich habe gerade den Server der Projektkopie gestartet. Alles funktioniert gut –