2016-11-29 3 views
0

Ich habe eine Spring Boot-Anwendung.Ich versuche OAuth2-Autorisierung für diese Anwendung zu implementieren. Ich habe dieses Tutorial https://spring.io/guides/tutorials/spring-boot-oauth2/gefolgt Aktivieren des Authorization Server Teil. Obwohl ich in der Lage bin, Zugriffstoken vom Auth-Server zu erhalten, wenn ich versuche, diese Tokens zu senden, um meinen Ressourcen-Server anzufordern, Fehler Unerlaubter Zugriff in der Konsole.OAuth2 Authentication Server und Ressourcenserver mit Spring Boot

org.springframework.security.access.AccessDeniedException: Access is denied 

Obwohl ich später sowohl der Autorisierungsserver & Ressourcenserver trennen, für die anfängliche Zweck werden einzelne Anwendung für beide arbeiten.

@Configuration 

@EnableAuthorizationServer 

public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

@Override 
public void configure(WebSecurity web) throws Exception { 
    web.ignoring().antMatchers(Application.baseURL + "/user/register"); 
} 

@Override 
protected void configure(HttpSecurity http) throws Exception { 
    http 
     .authorizeRequests().anyRequest().authenticated() 
     .and().exceptionHandling() 
     .authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/")) 
     .and().csrf().disable(); 
    } 

} 

und für Benutzer authetication

@Configuration 
class WebSecurityConfiguration extends GlobalAuthenticationConfigurerAdapter { 

@Loggable 
private static Logger logger; 

@Override 
public void init(AuthenticationManagerBuilder auth) throws Exception { 
    auth.userDetailsService(userDetailsService()).passwordEncoder(new BCryptPasswordEncoder()); 
} 

@Bean 
UserDetailsService userDetailsService() { 
    return new UserDetailsService() { 

     @Override 
     public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { 
      Session session = Hibernate.sessionFactory.openSession(); 
      try { 
       UserPasswordDTO userPasswordDTO = new UserPasswordModel().getByEmailId(session, username); 
       return new SimsmisUser(username, userPasswordDTO.hashedPassword, true, true, true, true, 
         AuthorityUtils.createAuthorityList("USER"), userPasswordDTO.userId); 
      } 
      catch (InvalidIdException e) { 
       throw new UsernameNotFoundException(e.getMessage()); 
      } 
      finally { 
       if (session != null) { 
        try { 
         session.close(); 
        } 
        catch (Exception e) { 
         logger.error(e.getMessage(), e); 
        } 
       } 
      } 
     } 
    }; 
} 
} 

Wie mit der Ressource-Server mit dem Zugriffstoken kommunizieren? Jedes Beispiel wird helfen.

Antwort

Verwandte Themen