Vous cherchez un exemple de sécurité de ressort Simple [fermé]
Je suis nouveau sur spring-security (Java) et je cherche un bon et simple Exemple de:
Comment utiliser le printemps de sécurité pour la connexion et la déconnexion
-
Assurez-vous que la session existe sur chaque page et sinon redirigez à nouveau vers la connexion
-
Comment accéder à la Session utilisateur actuelle
Mon projet travaille actuellement avec spring MVC et hibernate.
J'ai construit le loginAPI + loginDAO, je dois maintenant combiner la sécurité et faire certaines des pages sécurisées.
J'ai cherché des tutoriels, mais beaucoup d'entre eux sont très compliquées.
5 réponses
Eh bien.
C'est, je pense, est 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 à Authentification unique(par exemple CAS) dans Spring Security. Il servira votre but complètement.
Vérifier: -
Http://static.springsource.org/spring-security/site/docs/3.0.x/reference/cas.html
Https://wiki.jasig.org/display/CASC/Using+le + cas + Client + 3.1 + avec + printemps + sécurité
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 en utilisant Spring Security.
Si vous n'avez pas encore regardé cette vidéo du développeur principal de Spring Security . Il est en fait référencé sur le site de sécurité Spring, mais il est facile de manquer. Bien que je sois d'accord, de bons exemples de sécurité de printemps sont difficiles à trouver.
Tutoriel de sécurité printemps par MKyong
Technologies utilisées :
Ressort 3.2.8.Libération
Sécurité Du Ressort 3.2.3.Libération
Spring JDBC 3.2.3.Libération
Eclipse 4.2
JDK 1.6
Maven 3
Tomcat 6 ou 7 (Servlet 3.x)
Serveur MySQL 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();
}
}
Printemps-sécurité.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>
- dans Félicitation ci-dessus, le
/admin
et les sous-dossiers de celui-ci sont tous protégés par mot de passe. -
login-page=”/login”
- la page pour afficher le formulaire de connexion Personnalisé -
authentication-failure-url=”/login?error”
- si l'authentification a échoué, passez à la page/login?error
-
logout-success-url=”/login?logout”
- Si la déconnexion est réussie, transférer vers view/logout
-
username-parameter=”username”
– Le nom de la requête qui contient le "nom d'utilisateur". En HTML, c'est le nom du texte d'entrée. -
<csrf/>
– Activer la protection CSRF (Cross Site Request Forgery)