Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Asegurando aplicaciones web y servicios REST

Asegurando aplicaciones web y servicios REST

Presentacion realizada en el Meetup de CDM Java -> https://www.meetup.com/cdmanizalesjava/events/240296477/

Avatar for Jairo Henao

Jairo Henao

June 15, 2017

More Decks by Jairo Henao

Other Decks in Programming

Transcript

  1. ¿Cómo aseguramos nuestras aplicaciones?  Sesiones HTTP  Registro de

    usuarios con clave encriptada  Asignación de permisos mediante perfiles  Uso de algún framework de seguridad
  2. “ ” Any fool can write code that a computer

    can understand. Good programmers write code that humans can understand. Martin Fowler
  3. Aspectos claves  Protocolo OAuth  OpenID Connect  SAML

     User Federation  Identity Brokering
  4. Protocolo OAuth  Estandar abierto que permite flujos simples de

    autorización entre dos aplicaciones.  OAuth permite a un usuario del sitio A (Proveedor del servicio) compartir su información con el sitio B (Consumidor) sin exponer las credenciales de su cuenta.  OAuth permite mantener el control de revocar los permisos concedidos.  Este mecanismo es usado por sitios como Google, Facebook, Microsoft, Twiiter, Github.
  5. OpenID connect - OIDC  OpenID Connect es un protocolo

    de identidad simple y de estándar abierto creado sobre el protocolo OAuth 2.0 que permite a las aplicaciones cliente confiar en la autenticación realizada por un proveedor de OpenID Connect para verificar la identidad de un usuario.
  6. SAML  SAML (Security Assertion Markup Language) es un estándar

    OASIS basado en XML para el intercambio de información de la identidad de usuario y atributos de seguridad entre un proveedor de servicios y un proveedor de identidad (IdP).  SAML es un protocolo de autenticación y autorización usado en un Single-sign-on (SSO). Esto indica una sola autenticación para acceder a múltiples servidores.
  7. User federation  Una forma centralizada de administrar la información

    de los usuarios de una organización.  Su objetivo es mantener la sincronización de datos (Información personal, por ejemplo), gestión de acceso, servicios de directorio, auditoria.  Mediante soluciones de identidad federada, los usuarios pueden emplear su misma identificación para entrar a otros sistemas en la misma organización.
  8. Identity brokering  In identity broker (Agente de identidad) es

    un servicio que actua como intermediario y conecta a múltiples proveedores de servicios con diferentes proveedores de identidad.  Como intermediario es responsable de crear una relación de confianza con un proveedor de identidad externo para utilizar sus identidades para acceder a los servicios expuestos por el proveedor de servicios  Usualmente los identity providers están basados en los protocolos: SAML V2.0, OpenID Connect 1.0, OAuth v2.0
  9. Tenemos todo esto en un paquete…  Keycloak es una

    solución open source para la administración de identidades y acceso, orientada a servicios y aplicaciones modernas. Facilita la seguridad con muy poco código.
  10. Caracteristicas de Keycloak  Single-Sign On  Los usuarios ahora

    solo se autentican con Keycloak y no con cada aplicación individual.  Las aplicaciones ya no necesitan tener formularios de autenticación y registro. Tampoco almacenan datos de usuarios.  Una vez autenticado en Keycloak, los usuarios no necesitan autenticarse de nuevo. Ocurre lo mismo cuando cierran sesión.
  11. Caracteristicas de Keycloak  Kerberos bridge  En una organización

    donde tenga configurado las estaciones de trabajo dentro de un dominio con Kerberos (Microsoft Active directory)  Los usuarios pueden ser automáticamente autenticados con Keycloak sin tener que ingresar de nuevo el usuario y password al abrir su navegador  Solo basta con iniciar sesion.
  12. Caracteristicas de Keycloak  Identity brokering and social login 

    Habilitar la autenticación con redes sociales es muy sencillo. Consiste en seleccionarla y habilitarla.  No se requieren cambios en la aplicación.  Keycloak puede autenticarse con un Identity provider existente usando OpenID Connect o SAML 2.0.  Toda la configuración se hace a través de la consola de administración.
  13. Caracteristicas de Keycloak  User federation  Keycloak tiene soporte

    incorporado para conectarse con servidores LDAP y Active directory.  También ofrece la opción de implementar su propio proveedor para esos casos donde tenemos usuarios registrados en otros sistemas, como una base de datos relacional.
  14. Caracteristicas de Keycloak  Client adapters  Keycloak tiene adaptadores

    para una serie de plataformas y lenguajes de programación.  Si no esta disponible el de su preferencia, no se preocupe. Keycloak está construido sobre protocolos estándar para que pueda usar cualquier librería OidC o SAML.
  15. Caracteristicas de Keycloak  Admin console  A través de

    la consola de administración los administradores pueden gestionar todo lo relacionado con seguridad.  Se pueden habilitar/deshabilitar varias caracteristicas. Se configuran los Identity Brokers y los User federation.  Se pueden crear y administrar las aplicaciones y servicios. Definir además políticas de seguridad detalladas.  Permite administrar los usuarios, incluyendo sus permisos y sesiones.
  16. Caracteristicas de Keycloak  Account manage console  Le permite

    a cada usuario administrar los datos de su cuenta  Cambio de password.  Si el inicio de sesión en redes sociales está habilitado, los usuarios pueden configurar proveedores adicionales para permitir la autenticación a la misma cuenta.
  17. Caracteristicas de Keycloak  Authorization services  Keycloak proporciona la

    opción de definir la autenticación basada en roles.  Permite administrar los permisos de todos tus servicios y da el detalle exacto de las asignaciones a cada usuario.
  18. Adaptadores disponibles  Java adapter  JBoss EAP / Wildfly

     Tomcat 6, 7, 8  Jetty  Spring boot / Spring security  JAAS plugin  Javascript  Node.js adapter  Other OpenID connect libraries (Lenguaje/ambiente con soporte que use Apache HTTPD as a proxy)
  19. Desarrollo personalizado  Admin REST API  Themes  Custom

    user attributes  Identity brokering APIs  Add custom REST endpoints to the Keycloak server  Add custom JPA entities to the Keycloak data model  Service provider interfaces - SPI  Authentication SPI  Event listener SPI  User storage SPI
  20. Instalando Keycloak  Requerimientos mínimos  Cualquier SO que ejecute

    Java.  Java Runtime instalado  Base de datos nueva (Oracle, SQL Server, Postgresql). Construido con Hibernate.  512MB en RAM, 1GB en disco.
  21. Recursos, Contacto  Código fuente de ejemplo  https://github.com/jahenaor 

    Comunidad en Facebook https://www.facebook.com/groups/cdmanizales  Meetups https://www.meetup.com/cdmanizalesjava Mail: [email protected] Skype: jairo.Henao.05 / http://apuntandoanulo.wordpress.com/