2014-06-25 5 views
0

Je suis nouveau à Java et j'essaye d'écrire la première application web avec Spring framework (j'ai de l'expérience avec django/python et sinatra/ruby). J'ai besoin de mettre en place un système d'authentification utilisateur et je n'ai aucune idée de la meilleure façon de le faire correctement. Dois-je utiliser Spring Security pour cela? Ou il y a d'autres façons?Java Spring moyen de mettre en œuvre l'authentification des utilisateurs

Répondre

6

Depuis que vous démarrez une nouvelle application, je vous encourage fortement à utiliser Spring Boot. Cela vous enlèvera beaucoup de votre douleur initiale dans la configuration des différents aspects du printemps. En ce qui concerne la sécurité, vous devriez aller avec Spring Security qui est bien sûr facile à configurer avec Spring Boot.

Après this guide, d'une simple configuration Spring Security qui utilise l'authentification mémoire ressemblerait à ceci:

@Configuration 
@EnableWebMvcSecurity 
public class WebSecurityConfig extends WebSecurityConfigurerAdapter { 
    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
      .authorizeRequests() 
       .antMatchers("/", "/home").permitAll() 
       .anyRequest().authenticated(); 
     http 
      .formLogin() 
       .loginPage("/login") 
       .permitAll() 
       .and() 
      .logout() 
       .permitAll(); 
    } 

    @Override 
    protected void configure(AuthenticationManagerBuilder auth) throws Exception { 
     auth 
      .inMemoryAuthentication() 
       .withUser("user").password("password").roles("USER"); 
    } 
} 

Comme vous pouvez le voir, la première méthode est utilisée pour configurer les parties de l'application doivent être fixés et comment, tandis que la seconde méthode configure comment les utilisateurs seront authentifiés.

Une façon courante de fournir un moyen personnalisé pour authentifier les utilisateurs, est de fournir une coutume UserDetailsService mise en œuvre comme cela se fait here

Un moyen très facile de configurer l'authentification lorsque vous avez déjà configuré un DataSource et les informations d'identification utilisateur sont il stocké, est le suivant:

@Configuration 
@EnableWebSecurity 
public class SecurityConfig extends WebSecurityConfigurerAdapter { 

    @Autowired 
    private DataSource dataSource; 



    @Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http 
      .authorizeRequests() 
       .antMatchers("/", "/home").permitAll() 
       .anyRequest().authenticated(); 
     http 
      .formLogin() 
       .loginPage("/login") 
       .permitAll() 
       .and() 
      .logout() 
       .permitAll(); 
} 

    @Override 
    protected void registerAuthentication(AuthenticationManagerBuilder auth) throws Exception { 
     auth 
      .jdbcAuthentication() 
       .dataSource(dataSource) 
       .withUser("user").password("password").roles("USER").and() 
       .withUser("admin").password("password").roles("USER", "ADMIN").and() 
       .withDefaultSchema(); 
    } 

}

Here est la référence complète du printemps de sécurité. Aussi here est la partie de la sécurité de la documentation Spring Boot. Au départ, il peut sembler que la sécurité de printemps est compliquée, mais une fois que vous l'aurez compris, vous apprécierez son ensemble de fonctionnalités et sa personnalisation. Une note finale, quand il s'agit de choses comme la sécurité qui sont courantes dans de nombreuses applications, il n'est pas nécessaire de réinventer la roue! Aller avec la sécurité de printemps (ou peut-être Apache Shiro)

+0

Merci pour une réponse si détaillée! :) – Paul

+0

Votre accueil !!! – geoand

Questions connexes