Comment obtenir de Printemps de Démarrage et OAuth2 exemple, pour utiliser le mot de passe donnent d'autres informations que celles par défaut

Je suis en suivant la base de Printemps de Démarrage OAuth2 exemple de Dave Syer: https://github.com/dsyer/sparklr-boot/blob/master/src/main/java/demo/Application.java

@Configuration
@ComponentScan
@EnableAutoConfiguration
@RestController
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@RequestMapping("/")
public String home() {
return "Hello World";
}
@Configuration
@EnableResourceServer
protected static class ResourceServer extends ResourceServerConfigurerAdapter {
@Override
public void configure(HttpSecurity http) throws Exception {
//@formatter:off
http
//Just for laughs, apply OAuth protection to only 2 resources
.requestMatchers().antMatchers("/","/admin/beans").and()
.authorizeRequests()
.anyRequest().access("#oauth2.hasScope('read')");
//@formatter:on
}
@Override
public void configure(ResourceServerSecurityConfigurer resources) throws Exception {
resources.resourceId("sparklr");
}
}
@Configuration
@EnableAuthorizationServer
protected static class OAuth2Config extends AuthorizationServerConfigurerAdapter {
@Autowired
private AuthenticationManager authenticationManager;
@Override
public void configure(AuthorizationServerEndpointsConfigurer endpoints) throws Exception {
endpoints.authenticationManager(authenticationManager);
}
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
//@formatter:off
clients.inMemory()
.withClient("my-trusted-client")
.authorizedGrantTypes("password", "authorization_code", "refresh_token", "implicit")
.authorities("ROLE_CLIENT", "ROLE_TRUSTED_CLIENT")
.scopes("read", "write", "trust")
.resourceIds("sparklr")
.accessTokenValiditySeconds(60)
.and()
.withClient("my-client-with-registered-redirect")
.authorizedGrantTypes("authorization_code")
.authorities("ROLE_CLIENT")
.scopes("read", "trust")
.resourceIds("sparklr")
.redirectUris("http://anywhere?key=value")
.and()
.withClient("my-client-with-secret")
.authorizedGrantTypes("client_credentials", "password")
.authorities("ROLE_CLIENT")
.scopes("read")
.resourceIds("sparklr")
.secret("secret");
//@formatter:on
}
}
}

L'exemple fonctionne très bien pour les deux types de subventions, mais le mot de passe de subvention utilise le Printemps de Démarrage de sécurité par défaut de l'utilisateur (celui que l'écho est "l'Utilisation par défaut du mot de passe de sécurité: 927ca0a0-634a-4671-bd1c-1323a866618a" pendant le démarrage).

Ma question est comment faire pour remplacer le compte d'utilisateur par défaut et en fait s'appuyer sur un WebSecurityConfig? J'ai ajouté une section comme celle-ci:

@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");
}
}

Mais il ne semble pas modifier la valeur par défaut Printemps utilisateur/mot de passe même si la documentation suggère qu'il devrait.

Ce qui me manque pour le faire fonctionner?

  • Non, il ne devrait pas, sauf si vous ajoutez @Order(SecurityProperties.ACCESS_OVERRIDE_ORDER) à elle. Vous pouvez définir la valeur par défaut nom d'utilisateur/mot de passe dans l'application.fichier de propriétés en définissant les propriétés security.user.name et security.user.password. Pour plus de propriétés, voir la guide de référence.
  • Il y a une meilleure échantillon (plus à jour) ici: github.com/spring-projects/spring-security-oauth/blob/master/.... Que authenticationManager méthode est un nouveau remplacer dans le 2.0.4 instantanés (regardez dans la mise en œuvre si vous voulez l'utiliser avec la version 2.0.3).
  • l'exemple ne fonctionne pas pour moi, "Erreur lors de la création de haricots avec le nom" org.springframework.de sécurité.config.annotation.web.la configuration.WebSecurityConfiguration'"
  • Fonctionne pour moi et tous les tests sont au vert (et votre erreur fragment est trop petit pour diagnostiquer un problème). Comment êtes-vous du bâtiment et de l'exécution de cette application?