¡Buen día!

En este post se explica cómo implementar un proveedor de seguridad propio usando Spring Security 3.1.0.

La implantación de un proveedor de seguridad propio en Spring es algo muy simple, solo se debe crear una clase que implemente la interfaz org.springframework.security.authentication.AuthenticationProvider, como se aprecia en el código a continuación:

package com.vortexbird.demo.security;

import java.util.ArrayList; 
import java.util.List;  

import org.springframework.context.annotation.Scope; 
import org.springframework.security.authentication.AuthenticationProvider; 
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken; 
import org.springframework.security.core.Authentication; 
import org.springframework.security.core.AuthenticationException; 
import org.springframework.security.core.GrantedAuthority; 
import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.User; 
import org.springframework.security.core.userdetails.UserDetails; 
import org.springframework.stereotype.Component;   

@Scope("singleton") 
@Component("VortexAuthenticationProvider") 
public class VortexAuthenticationProvider implements AuthenticationProvider { 	 	
/** 	 
* Implementacion de la seguridad propia 	 
*/ 	
@Override 	
public Authentication authenticate(Authentication authentication)throws AuthenticationException { 
		 	String name = authentication.getName();         
String password = authentication.getCredentials().toString();
                  if (name.equals("admin") && password.equals("system")) {             
final List grantedAuths = new ArrayList();             
grantedAuths.add(new SimpleGrantedAuthority("ROLE_USER"));             
	final UserDetails principal = new User(name, password, grantedAuths);     
	final Authentication auth = new UsernamePasswordAuthenticationToken(principal, password, grantedAuths);
             return auth;
         } else {
             return null;         
	}
 	}  	
	/** 	 
	* Este metodo se llama primero cuando se autentica un usuario 	 
	*/ 	
	@Override 	
	public boolean supports(Class<?> authentication) { 		 return authentication.equals(UsernamePasswordAuthenticationToken.class); 	
	}  
}

Luego se debe crear el archivo de configuración con la seguridad, como se muestra a continuación:

 
           	 	



 
		 
	

	 
	
	 	
	
	 		 			
	 				
		 					
	 				
	 				
	 			
	 		
	
 	

  	
 		 	 

Como se puede observar, VortexAuthenticationProvider es un bean que se encuentra en el contexto de Spring y es el que se debe encargar de buscar los usuarios. Desde ese método se puede llamar un servicio web o cualquier sistema de autenticación con el que se cuenta.

No hay comentarios

Leave a Reply

Your email address will not be published. Required fields are marked *