Je suis nouveau sur Spring-Security (Java) et je cherche un bon et simple exemple de:
Comment utiliser la sécurité de printemps pour la connexion et la déconnexion
Assurez-vous que la session existe sur chaque page et, si ce n’est pas le cas, redirigez-la à nouveau à la connexion.
Comment avoir accès à la session utilisateur en cours?
Mon projet fonctionne actuellement avec Spring MVC et hibernate.
J'ai construit le loginAPI + loginDAO, il me faut maintenant combiner la sécurité et sécuriser certaines pages.
J'ai cherché des tutoriels, mais beaucoup d'entre eux sont très compliqués.
Eh bien ... c'est ce que je pense de loin le meilleur que j'ai vu jusqu'à présent!
http://krams915.blogspot.com/2010/12/spring-security-mvc-integration_18.html
Vous pouvez rechercher une implémentation Single Sign-On (par exemple, CAS) dans Spring Security. Ça va servir votre but complètement.
Check-out :-
http://static.springsource.org/spring-security/site/docs/3.0.x/reference/cas.html
https://wiki.jasig.org/display/CASC/Using+the+CAS+Client+3.1+with+Spring+Security
C'est aussi un excellent exemple:
http://www.mkyong.com/spring-security/spring-security-form-login-example/http://krams915.blogspot.pt/2010/12/spring-security -3-mvc-using-simple-user.html
Les deux sont bien documentés et sont faciles à modifier pour votre proposition. Krams parle de LDAP avec Spring Security.
Tutoriel de sécurité de printemps par MKyong
Technologies utilisées:
Printemps 3.2.8.LELEASE
Spring Security 3.2.3.LELELE
Spring JDBC 3.2.3.LELEASE
Eclipse 4.2
JDK 1.6
Maven 3
Tomcat 6 ou 7 (Servlet 3.x)
MySQL Server 5.6
SecurityConfig.Java
package com.mkyong.config;
import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
DataSource dataSource;
@Autowired
public void configAuthentication(AuthenticationManagerBuilder auth) throws Exception {
auth.jdbcAuthentication().dataSource(dataSource)
.usersByUsernameQuery(
"select username,password, enabled from users where username=?")
.authoritiesByUsernameQuery(
"select username, role from user_roles where username=?");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeRequests()
.antMatchers("/admin/**").access("hasRole('ROLE_ADMIN')")
.and()
.formLogin().loginPage("/login").failureUrl("/login?error")
.usernameParameter("username").passwordParameter("password")
.and()
.logout().logoutSuccessUrl("/login?logout")
.and()
.exceptionHandling().accessDeniedPage("/403")
.and()
.csrf();
}
}
Spring-security.xml
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.2.xsd">
<!-- enable use-expressions -->
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/admin**" access="hasRole('ROLE_ADMIN')" />
<!-- access denied page -->
<access-denied-handler error-page="/403" />
<form-login
login-page="/login"
default-target-url="/welcome"
authentication-failure-url="/login?error"
username-parameter="username"
password-parameter="password" />
<logout logout-success-url="/login?logout" />
<!-- enable csrf protection -->
<csrf/>
</http>
<!-- Select users and user_roles from database -->
<authentication-manager>
<authentication-provider>
<jdbc-user-service data-source-ref="dataSource"
users-by-username-query=
"select username,password, enabled from users where username=?"
authorities-by-username-query=
"select username, role from user_roles where username =? " />
</authentication-provider>
</authentication-manager>
</beans:beans>
/admin
et ses sous-dossiers sont tous protégés par un mot de passe.login-page=”/login”
- La page pour afficher le formulaire de connexion personnaliséauthentication-failure-url=”/login?error”
- Si l'authentification échoue, transférer à la page /login?error
logout-success-url=”/login?logout”
- Si la déconnexion réussit, transférez-la pour afficher /logout
username-parameter=”username”
- Nom de la demande contenant le «nom d'utilisateur». En HTML, c'est le nom du texte saisi.<csrf/>
- Activer la protection CSRF (Cross Site Request Forgery)Si vous n'avez pas encore regardé cette vidéo du développeur principal de Spring Security . En fait, il est référencé sur le site Spring Security, mais il est facile de le rater. Bien que je sois d’accord, bon Printemps Les exemples de sécurité sont difficiles à trouver.