introduccion - spring mvc netbeans
Buscando un ejemplo de seguridad Simple Spring (5)
Soy nuevo en spring-security (Java) y estoy buscando un ejemplo bueno y simple de:
Cómo usar la seguridad de primavera para iniciar sesión y desconectarse
Asegúrese de que la sesión exista en todas las páginas y, si no, redirija el inicio de sesión de nuevo
Cómo acceder a la sesión de usuario actual
Mi proyecto actualmente está trabajando con Spring MVC e hibernate.
He creado el loginAPI + loginDAO, ahora necesito combinar la seguridad y asegurar algunas de las páginas.
Busqué tutoriales, pero muchos de ellos son muy complicados.
Bien. ¡Esto es, creo que de lejos es lo mejor que he visto hasta ahora!
http://krams915.blogspot.com/2010/12/spring-security-mvc-integration_18.html
Este es también un gran ejemplo:
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
Ambos están bien documentados y son fáciles de modificar para su propuesta. Krams habla sobre LDAP usando Spring Security.
Puede buscar una implementación de inicio de sesión único (por ejemplo, CAS) en Spring Security. Te servirá tu propósito por completo.
Revisa :-
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
Si aún no ha visto este video por el desarrollador principal de Spring Security . En realidad, se hace referencia en el sitio de Spring Security, pero es fácil pasar por alto. Aunque estoy de acuerdo, los buenos ejemplos de Spring Security son difíciles de encontrar.
Spring Security Tutorial de MKyong
Tecnologías utilizadas:
Spring 3.2.8.RELEASE
Spring Security 3.2.3.RELEASE
Spring JDBC 3.2.3.RELEASE
Eclipse 4.2
JDK 1.6
Maven 3
Tomcat 6 o 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>
- En la felicitación anterior, el
/admin
y las subcarpetas están protegidos por contraseña. -
login-page=”/login”
- La página para mostrar el formulario de inicio de sesión personalizado -
authentication-failure-url=”/login?error”
- Si la autenticación falló, reenviar a la página/login?error
-
logout-success-url=”/login?logout”
- Si el cierre de sesión fue exitoso, reenviar para ver/logout
-
username-parameter=”username”
- El nombre de la solicitud que contiene el "nombre de usuario". En HTML, este es el nombre del texto de entrada. -
<csrf/>
- Habilita la protección contra falsificación de solicitudes entre sitios (CSRF)