0

J'ai développé un service Web RESTful en utilisant Spring Boot. Une fois qu'une URL est entrée, une ressource JSON est renvoyée. Le côté serveur n'est pas parfaitement conforme à JSON API mais cela fonctionne.Application de démarrage sécurisé Spring Restful

Maintenant, je veux sécuriser le service RESTful avec une simple authentification de base HTTP. Il suffit de mettre, si un client envoie un HTTP GET afin d'accéder

http://mycompany.com/restful/xyz 

il recevra une erreur HTTP non authentifié, sauf si la demande est configuré avec une bonne Authorization basic XXXXXXXX. Le xxxxxx est la forme cryptée de utilisateur: pwd

Je voulais le faire avec Spring Security. Après quelques googler je pourrais avoir besoin de créer une classe comme:

@Configuration 
@EnableGlobalMethodSecurity(prePostEnabled = true) 
@EnableWebSecurity 
public class SecurityConfiguration extends WebSecurityConfigurerAdapter { 
    @Autowired 
    public void configureGlobalSecurity(AuthenticationManagerBuilder auth) throws Exception { 
    .... 
    } 

    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     .... 
    } 
} 

Il y a deux choses que je dois comprendre:

  1. La plupart du printemps échantillon de sécurité, j'ai trouvé étaient liés en quelque sorte à l'application Web en utilisant Spring MVC , mais je suis sûr qu'il peut être utilisé dans un scénario comme indiqué ci-dessus - un service Web autonome (dans un Tomcat tout droit, mais pas une application Web);

  2. Quelqu'un peut-il montrer un certain bout de code dans les deux méthodes ci-dessus que le travail à l'effet que seuls certains utilisateurs/passwd est autorisé à passer le filtre à la ressource,

    http://mycompany.com/restful/xyz 
    

    sinon un code d'erreur d'authentification HTTP est retourné.

Quelqu'un peut-il aider?

Répondre

0

Vous pouvez avoir quelque chose comme ceci:

@Configuration 
@EnableGlobalMethodSecurity(prePostEnabled = true) 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http.authorizeRequests().antMatchers("/restful/**").hasRole("ROLE_USER").and().httpBasic(); 
    } 

    @Override 
    protected void configure(AuthenticationManagerBuilder auth) throws Exception { 
     auth.inMemoryAuthentication().withUser("john").password("mypass").roles("ROLE_USER"); 
    } 
} 
+0

merci, fonctionne comme un charme –