17

Dave SYER temel Bahar Boot OAuth2 örnek takip ediyorum varsayılan dışında şifre hibe kimlik bilgilerini kullanmak için hibe, ancak şifre hibe Bahar önyükleme varsayılan güvenlik kullanıcısı (başlatma sırasında "varsayılan güvenlik parolasını kullanma: 927ca0a0-634a-4671-bd1c-1323a866618a") kullanır.Nasıl Bahar Boot ve OAuth2 örnek

Soruma göre varsayılan kullanıcı hesabını nasıl geçersiz kılıyorsunuz ve aslında bir WebSecurityConfig belgesine güveniyorsunuz?

@Configuration 
@EnableWebSecurity 
@EnableGlobalMethodSecurity(prePostEnabled = true) 
protected static class WebSecurityConfig extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(AuthenticationManagerBuilder authManagerBuilder) 
      throws Exception { 
     authManagerBuilder.inMemoryAuthentication().withUser("user") 
       .password("password").roles("USER"); 
    } 
} 

Ama dokümantasyon olması gerektiği ileri sürmektedir rağmen varsayılan Bahar kullanıcı/parola geçersiz görünmüyor: Böyle bir bölüm ekledik.

Bu çalışma için neyi kaçırıyorum? Ben 2.0.3 üzerinde hâlâ gibi

+0

Hayır buna '@Order (SecurityProperties.ACCESS_OVERRIDE_ORDER)' eklemek gerekir sürece - Ayrıca yukarıdaki sorunun deyimi için iyi bir referans buldum. 'Security.user.name' ve 'security.user.password' özelliklerini ayarlayarak, varsayılan kullanıcı adını/şifresini application.properties dosyasında ayarlayabilirsiniz. Daha fazla özellik için [başvuru kılavuzu] 'na bakın (http://docs.spring.io/spring-boot/docs/current/reference/html/common-application-properties.html). –

+0

Daha iyi bir örnek var (daha güncel) https://github.com/spring-projects/spring-security-oauth/blob/master/tests/annotation/jdbc/src/main/java/demo/Application .java # L81. Bu 'authenticationManager' yöntemi 2.0.4 snapshot'larda yeni bir geçersiz kılmadır (2.0.3 ile kullanmak istiyorsanız uygulamaya bakın). –

+0

@DaveSyer örnek benim için çalışmadı, "org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration 'adı ile fasulye oluştururken hata" " –

cevap

7
@Configuration 
protected static class AuthenticationManagerConfiguration extends GlobalAuthenticationConfigurerAdapter { 

     @Override 
     public void init(AuthenticationManagerBuilder auth) throws Exception { 
      auth.inMemoryAuthentication().withUser("min").password("min").roles("USER"); 
     } 

    } 
+0

Evet, bu, 2.0.3'te kullanmak zorunda olduğumdan çok daha güzel bir çözüm. –

6

, ben birkaç şey daha denedim ve bu çalışıyor gibi görünüyor:

@Configuration 
@EnableWebSecurity 
@EnableGlobalMethodSecurity(prePostEnabled = true) 
protected static class WebSecurityConfig extends WebSecurityConfigurerAdapter { 

    @Override 
    protected void configure(AuthenticationManagerBuilder authManagerBuilder) throws Exception { 
     authManagerBuilder 
      .inMemoryAuthentication() 
       .withUser("user1").password("password1").roles("USER").and() 
       .withUser("admin1").password("password1").roles("ADMIN"); 
    } 

    @Bean 
    @Override 
    public AuthenticationManager authenticationManager() throws Exception { 
     return super.authenticationManager(); 
    } 
} 

açıkça authenticationManager fasulye tanımlayarak, yerleşik kullanıcı kimlik doğrulama gittiler ve kendi inMemoryAuthentication'a güvenmeye başladı. 2.0.4 piyasaya çıktığında, Dave'in daha zarif olacağını düşündüğü şekilde yukarıda yayınlanan çözümü yeniden değerlendireceğim. (Genellikle hemen durum olacaktır) Yukarıdaki Spring 1.5 ve ihtiyacı ek özellik eklemek için ise https://github.com/dsyer/sparklr-boot/blob/master/src/main/java/demo/Application.java

Spring 1.3 içindir -

+0

OAuth Sunucunuzdaki statik sayfaları yapılandırmanız gerektiğinde ve bunların herkese açık olması gerektiğinde bu çözümün daha uygun olduğunu düşünüyorum. Configure (HttpSecurity http) 've' configure (WebSecurity web) 'komutunu geçersiz kılabilir ve bu amaçla spesifik' antMatcher'ları tanımlayabilirsiniz. –

+0

Kullanıcıları bir veritabanında depolamayı ve bu noktada kimlik bilgilerini nasıl kontrol edeceğinizi biliyor musunuz? – Marcel

+0

Şerefe! Yukarıdaki çözüm kudos @shawn çalışmaktadır – Harleen

3

örneğin yukarıda işaret edilen.

security.oauth2.resource.filter-order = 3 

konunun çok karşı karşıya kalan - Ayrıca aşağıdaki özellik eklemek gerekir Bahar Boot 1.5 kullanıyorsanız ve üzeri

Diğerleri işaret olarak,

@Configuration 
@EnableWebSecurity 
public class EmployeeSecurityConfiguration extends WebSecurityConfigurerAdapter { 

    @Override 
    public void configure(WebSecurity web) throws Exception { 
     web.ignoring().antMatchers("/resources/**"); 
    } 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http.authorizeRequests().antMatchers("/").permitAll().antMatchers("/user/getEmployeesList") 
      .hasAnyRole("ADMIN").anyRequest().authenticated().and().formLogin() 
      .permitAll().and().logout().permitAll(); 

     http.csrf().disable(); 
    } 

    @Override 
    public void configure(AuthenticationManagerBuilder authenticationMgr) throws Exception { 
     authenticationMgr.inMemoryAuthentication().withUser("javainuse").password("javainuse") 
      .authorities("ROLE_ADMIN"); 
    } 
} 

Önemli noktasını kullanabilir olduğunu bunu tanımlamaya çalışıyor. Spring Boot + OAuth2 Example

İlgili konular