springsecurity oauth google

Download SpringSecurity OAuth Google

Post on 21-Oct-2015

45 views

Category:

Documents

2 download

Embed Size (px)

TRANSCRIPT

  • Avenida de Castilla,1 - Edificio Best Point - Oficina 21B28830 San Fernando de Henares (Madrid)

    tel./fax: +34 91 675 33 06info@autentia.com - www.autentia.com

    Somos su empresa de Soporte a Desarrollo Informtico.Ese apoyo que siempre quiso tener...

    1. Desarrollo de componentes y proyectos a medida

    TecnologaDesarrolloSistemas

    Gran Empresa

    Produccin

    autentia

    Certificacino Pruebas

    Verificacin previa

    RFP Concurso

    Consultora 1

    Consultora 2

    Consultora 3

    Equipo propio desarrolloPiloto

    3a

    3b

    1. Definicin de frameworks corporativos.2. Transferencia de conocimiento de nuevas arquitecturas.3. Soporte al arranque de proyectos.4. Auditora preventiva peridica de calidad.5. Revisin previa a la certificacin de proyectos.6. Extensin de capacidad de equipos de calidad.7. Identificacin de problemas en produccin.

    3. Arranque de proyectos basados en nuevas tecnologas

    Qu ofrece Autentia Real Business Solutions S.L?

    Para ms informacin vistenos en: www.autentia.comCompartimos nuestro conociemiento en: www.adictosaltrabajo.com

    Gestor portales (Liferay)Gestor de contenidos (Alfresco)Aplicaciones hbridas

    Tareas programadas (Quartz)Gestor documental (Alfresco)Inversin de control (Spring)

    BPM (jBPM o Bonita)Generacin de informes (JasperReport)ESB (Open ESB)

    Control de autenticacin y acceso (Spring Security)UDDIWeb ServicesRest ServicesSocial SSOSSO (Cas)

    Spring MVC, JSF-PrimeFaces /RichFaces, HTML5, CSS3, JavaScript-jQuery

    JPA-Hibernate, MyBatisMotor de bsqueda empresarial (Solr)ETL (Talend)

    Direccin de Proyectos Informticos.Metodologas gilesPatrones de diseoTDD

    2. Auditora de cdigo y recomendaciones de mejora

    4. Cursos de formacin (impartidos por desarrolladores en activo)

  • Entra en Adictos a travs de

    Entrar

    E-mail

    Contrasea

    Deseo registrarmeOlvid mi contrasea

    Sguenos a travs de:

    Catlogo de servicios

    Autentia

    ltimas Noticias

    Comentando el libro: AgileManagement de AngelMedinilla

    Final de temporada deTerrakas Autentiafreaklances

    Atencin, APLAZADOEstreno ltimo captulo deTerrakas

    Vendedor: Soy inseguro,filtra o elige por mi: si quieresque te compre.

    Comentando el libro: Elarte de pensar, de RolfDobelli

    Histrico de noticias

    ltimos Tutoriales

    Hola Mundo con Spring 3MVC

    Ejecucin de tests unitarioscon junit en proyectos ant ysu integracin en jenkins ysonar para medir lacobertura.

    Comentando la AOS 2013

    Soporte en Sonar para unproyecto multi-lenguaje:configuracin desde Jenkins

    Integracin de SeleniumGrid con Jenkins

    Ver todos los tutoriales del autor

    David Gmez Garca

    Titulado en Ingeniera Tcnica en Informtica por la Universidad Politcnica deMadrid en 1998, David ha participado en proyectos para telecomunicaciones,comercio electrnico, banca, defensa y sistemas de transporte terrestre. Ha lideradoproyectos de aplicaciones web, infraestructura SOA, aplicaciones java cliente ypasarelas de comunicacin entre sistemas.

    Twitter: Seguir a Seguir a @dgomezg@dgomezg 453 seguidores

    Fecha de publicacin del tutorial: 2013-07-08

    Integrar el login de Google en tu App con OAuth2 y Spring Security

    En este tutorial, vamos a ver cmo montar en tres sencillos pasos la seguridad de nuestra aplicacin con SpringSecurity, pero delegando la autenticacin en un proveedor externo de OAuth2 como Google (o tambin podra serFacebook, twitter, Linkedin u otros).

    Qu significa esto?, bsicamente que delegaremos el control de usuario y password (la autenticacin) en un sistemaajeno, de forma que no tenemos que preocuparnos de la gestin de usuarios (darlo de alta, gestionar sus contraseas,sus recordatorios, etc..) ya que ese mantenimiento ya lo lleva a cabo el proveedor de OAuth contra el que conectamos.

    En nuestra aplicacin, por tanto, slo nos preocuparemos de delimitar las restricciones de seguridad (la autorizacin);esto es, a quin o a qu tipo de usuarios dejamos acceder a qu partes.

    Empezaremos por crear una aplicacin web que tendr una parte pblica (accesible a cualquier usuario) y una parteprivada (slo para usuarios registrados). Configuraremos Spring Security para especificar las restricciones de seguridadde la parte privada. Por ltimo configuraremos el sistema de autenticacin de Spring Security, utilizando una librera conimplementacin de proveedores especficos de SpringSecurity para OAuth, para integrar el proceso de identificacin delusuario (autenticacin).

    Iremos viendo estos pasos en los siguientes apartados:

    Estructura bsica de la aplicacinObtener las API Keys para poder utilizar el Login de Google.Configurando Spring Security en nuestra aplicacin.Configuracin de Google como proveedor OAuth de autenticacinLa prueba de la aplicacin

    Una vez que tengamos configurada la autenticacin utilizando un proveedor de OAuth, evolucionaremos nuestrosistema, incluyendo soporte a varios proveedores.

    Estructura bsica de la aplicacin.

    Nuestra aplicacin de ejemplo constar de una "Landing Page", que consideraremos pblica y a la que podr accedercualquier usuario. En la landing page, daremos la opcin de que el usuario acceda a la parte privada, donde se mostrarsu nombre y sus credenciales asignadas dentro de la aplicacin. Esta pgina con la descripcin del perfil ser la parteque consideraremos privada y, por tanto, slo de acceso para usuarios registrados.

    El esquema general del proceso de login con OAuth

    Vamos a utilizar Spring MVC para la aplicacin web. As que comenzamos por definir en el Web.xml el DispatcherServletde Spring:

    1234

  • ltimos Tutoriales del

    Autor

    El Mediterrnea APIDaysque vivimos

    Una vez configurado el DispatcherServlet de Spring, configuramos los componentes de infraestructura de Spring MVCen el fichero {servlet-name}-servlet.xml. En este caso, el fichero se llamar springWeb-servlet.xml

    Con la estructura de Spring y de la aplicacin web creadas, utilizaremos como pgina pblica una versin ligeramentemodificada de uno de los ejemplos de Twitter Bootstrap, en la que incluimos un botn con un enlace a la pgina privada:

    Ahora definiremos un controlador de Spring MVC que simplemente pondr informacin del perfil del usuario disponibleen la vista:

    Por ltimo, para acabar la estructura bsica de la aplicacin, preparamos la pgina privada donde mostraremosinformacin del usuario registrado (en este caso ser solo el perfil del usuario, para mantener el ejemplo sencillo). Estapgina la crearemos en /WEB-INF/jsp/userHome.jsp

    Con esta estructura, tendremos ya la aplicacin base sobre la que aadir la seguridad con el proceso de Login delegadoen proveedores externos. Es normal que, en este punto, la aplicacin d un error al pulsar en el botn de "Entrar" de laparte pblica. Eso se debe a que no hemos configurado todava los procesos de seguridad.

    Vamos ahora a ello. Vamos a empezar con integrar la validacin de usuario con Google.

    Obtener las API Keys para poder utilizar el Login de Google.

    Para invocar el servicio de Login de Google, necesitamos obtener un cdigo de uso (un API Key) para nuestraaplicacin. Para ello, accederemos a la consola de APIs de Google.

    Si no lo hemos hecho antes, el primer paso que necesitamos es crear un proyecto

    56789

    1011121314151617

    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> springWeb org.springframework.web.servlet.DispatcherServlet springWeb /*

    123456789

    1011121314151617181920212223242526

  • Consola en Google APIs para dar de alta nuestro proyecto

    Pulsamos en el botn "Create project..." y en la siguiente pantalla podemos seleccionar los servicios que vamos a quererutilizar de Google. En este caso, como slo vamos a utilizar el Login, no es necesario seleccionar ningn servicioadicional; pasamos a obtener el API Key. Para ello, seleccionamos en el men de la izquierda, la opcin API Access:

    Creacin de un cliente para el acceso al API de OAuth de Google

    Pulsamos en el botn "Create an OAUTH 2.0 client ID..." e introducimos los datos de nuestra aplicacin

    Detalles del cliente para el acceso al API de OAuth de Google

  • En el siguiente apartado, especificamos el tipo de aplicacin, en nuestro caso, una aplicacin web, e indicamos, paranuestro tutorial, que la URL es http://localhost

    Tipo del cliente para el acceso al API de OAuth de Google

    Pulsamos en el botn "Create client ID" y nos llevar al panel de control donde podremos ver el API Key generado quetendremos que configurar ms adelante en nuestra aplicacin. En concreto, necesitaremos los valores del "Client ID" y el"Client Secret".

    Datos a usar en el cliente para el acceso al API de OAuth de Google

    Desde esta consola de administracin podremos crear nuevos clientes de autorizacin ("Create another client ID...") omodificar, por ejemplo la URL a la que Google deber devolver la llamada despus de haber realizado la autenticacin("Edit settings..."). Volveremos sobre esto un poco ms tarde.

    Configurando Spring Security en nuestra aplicacin.

    Spring Security es un mdulo del framework de Spring que nos permite configurar de forma muy sencilla la gestin deseguridad en nuestras aplicaciones web.

    Se basa en un Filtro, o ms bien en una cadena de filtros (SpringSecurityFilterChain), que se encargar de coordinar lasdistintas tareas que participan en el control de la seguridad de una aplicacin Web.

    Para aadir seguridad con Spring Security en nuestra aplicacin web, comenzaremos por configurar dicho filtro deseguridad en nuestro descriptor web.xml:

    Con esta configuracin, se crea un servletFilter (DelegatingFilterProxy) que buscar