2017-06-19 6 views
0

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.

+1

https://stackoverflow.com/questions/30366405/how-to-disable-spring-security-for-particular-url versuchen, 'anonymous(). Disable()' – StanislavL

+0

zu entfernen, leider hat es nicht funktioniert –

+0

danke für Ihre Hilfe. Es funktioniert entweder mit oder ohne anonymous(). disable(). Ich habe gerade den Server der Projektkopie gestartet. Alles funktioniert gut –

Antwort

0

Ich fand das Problem .... das Problem war ich.

Es ist nichts falsch an diesem Code. Ich habe gerade den falschen Server gestartet (Projekt kopieren). Alles funktioniert gut.

Verwandte Themen