Upload
genexus
View
2.823
Download
5
Embed Size (px)
DESCRIPTION
Qué abarca la seguridad de una aplicacion. GAM es una solucion de seguridad que se incorpora de manera automática en nuestras kbs. Se liberó en la versión Evolution 2, y busca resolver tanto problemas de autenticación como de autorizacion en nuestras apliaciones WEB y Smart Devices.
Citation preview
GeneXus Access Manager
Artech Diciembre 2013
Seguridad
• Infraestructura• Seguridad a nivel de deploy de la aplicación• Seguridad en la aplicación a nivel de programación
• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?21889• Controles de autenticación / autorización - GAM
Aplicaciones WEB
• Autenticación• N puntos de entrada• Complejidad del código de control de acceso según políticas
• Autorización• Granularidad de roles y permisos
GAM
• Solución de seguridad integrada en GeneXus
• Autenticación y Autorización
• Seguridad en aplicaciones WEB y Smart Devices
Cómo Funciona en web
• Login/Autenticación• Chequeo de seguridad en
cada Get/Post/Ajax/etc.
WEB APPLICATIO
N
APP. DB GAM DB
GAM API
APPLICATION SERVER
Login Usuario Password
Web page
Session
GET o POST o ServiciosRespuesta
Escenarios
• Autenticación • Local: Las credenciales del los usuarios residen en las propias tablas del
GAM.• Externa
• Login Facebook, Twitter, Google, WS externos (SOAP), Autenticación Custom.
• GAM Escenarios de Autenticación• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?15937
• Autorización• Autorización puede ser delegada.
• GAM Escenarios de Autorización• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?17583
Cómo habilitar el GAM
Propiedades de la versión:
• Enable Integrated Security = TRUE
• Integrated Security Level • None• Authentication• Authorization
http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?19946
Qué ocurre a nivel de GX?
• API del GAM • External Objects para su acceso
• Ejemplos de uso de la API• Backend para administración del repositorio• GAMExampleLogin, GAMExampleNotAuthorized, etc.
• Creación de datastore secundario para repositorio del GAM
• Inicialización de propiedades• Usuario «admin» • Login Object for Web / SD
• Proceso de activación del GAM:• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?21973
Qué ocurre en la aplicación?
• Control de acceso automático en cada objeto
• Control de flujo automático de la aplicación luego del control de acceso
Backend del GAM
• Consola Web de administración (customizable)• GAM Users• Roles• Security Policies• Applications• Repository Configuration• Repository Connections• Authentication Types• GAM Permissions.
• GAM Web Backoffice:• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?15935
API del GAM
• External objects de la librería del GAM
Métodos• Load()• Save()• Delete()• Fail()• Success()
Otras propiedades y métodos• GAMRole.AddPermission• GAMUser.GetRoles
etc
• GAM API:• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?16535
Ejemplo de uso de la API del GAM
Autorización
• Integrated Security Level = Authorization• Propiedad Permission Prefix
• Generación de Permisos automáticos por cada objeto• <Permission Prefix>_Execute
• Permisos de ejecución y sobre los modos de transacciones y servicios REST
• Código del chequeo de seguridad en el generador
• GAM Autorización:http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?17918
Permisos en Transacciones
• En las Transacciones WEB• <entity>_FullControl
• <entity>_Execute• <entity>_Insert• <entity>_Update• <entity>_Delete
• En las Transacciones expuestas como Servicios Rest • <entity>_Services_FullControl
• <entity>_Services_Execute• <entity>_Services_Insert• <entity>_Services_Update• <entity>_Services_Delete
• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?17916
Integración de aplicaciones con GAM
• Problema a resolver• Quiero integrar mi aplicación y debo autenticarme con un servicio de
terceros
Autenticación externa
• Autenticación Facebook, Twitter, Google• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?21755
• Autenticación por web services SOAP• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?16512
• Autenticación «custom»• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?21751
Autenticación Externa Google
• 1º definir una aplicación cliente en el sitio de Google.
GAM Google Authentication Type:http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?20020
Autenticación Externa Google
• Definir Google Authentication Type.
Autenticación externa: WS SOAP• El servicio tiene que cumplir un formato de respuesta pre-
establecido.• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?16512
Autenticación externa: Custom• Proc GeneXus (.class, .dll, .rb) o Clase externa (no GeneXus)
• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?21751
Conversión del mecanismo tradicional de seguridad al GAM
• Problema a resolver• Debo asociar los usuarios del GAM con los usuarios de la BD de mi
aplicación: ExternalId• Extender los atributos de los usuarios: Atributos dinámicos de la tabla de
usuarios.
http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?16552
Delegar Autorización
• Corporaciones con servidores de autorización
Authorization ServerWEB APPLICATION
DB GAM
GAM API
GET/POST/AJAX
Autorización delegada
• Autorización delegada del GAM:• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?22898
Deploy de aplicaciones con GAM
• Deploy de los binarios• Deploy de los datos• Hardening de la configuración del repositorio
Deploy de aplicaciones con GAM
• Binarios• Librerias del GAM• Connection.gam• Application.gam
http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?21219
• Datos• GAM deploy Tool
http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?18608
Puesta en producciónHardening
• Crear nuevas Repository Connections• Verificar el código de "GAMExampleRecoverPassword”• User Recovery Password Key Timeout (minutes)• Minimum Amount Of Characters In Login• Login Attempts To Lock User• Period change password (days)• Maximum Password History Entries
• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?18574
Escenarios con múltiples repositorios
• Aplicación multitenant• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?18710
• Aplicación en diferentes “sucursales”• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?18709
• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?18682
Referencias
• http://wiki.gxtechnical.com/commwiki/servlet/hwikibypageid?14960
• http://www.genexus.com/encuentro2013/gx23-materiales?es,0,,3256