Este documento describe los conceptos y procesos fundamentales de la autenticación y control de acceso en aplicaciones web desarrolladas con Grails. Explica cómo implementar el registro de usuarios, el proceso de login, el hashing de contraseñas, y el uso de filtros para asegurar que solo usuarios autenticados puedan acceder a ciertas áreas de la aplicación.
Particularmente jQuery es uno de los Framework o Librería JavaScript más usado que existen en la actualidad, aunque no trae incorporado la arquitectura MVC podemos usarlo con este diseño y mejorar la organización y desacoplamiento de las funciones de nuestras aplicaciones.
Particularmente jQuery es uno de los Framework o Librería JavaScript más usado que existen en la actualidad, aunque no trae incorporado la arquitectura MVC podemos usarlo con este diseño y mejorar la organización y desacoplamiento de las funciones de nuestras aplicaciones.
Conceptos básicos de Ruby on Rails incluyendo:
- Controladores y acciones
- Rutas
- Configuraciones de applicacion
- Generación de modelos y Active Record
- Plantillas y vistas
- REST y recursos
Además de dos ejemplos prácticos:
- Página con mensaje 'Hola Mundo'
- MiniAplicación de blogs
JBossAS: Desarrollo con Java Server FacesAitor Acedo
JBossAS: Desarrollo con Java Server Faces es un curso en español para introducir la tecnología JSF en el desarrollo de interfaces en aplicaciones web y realizar despliegues en el servidor JBoss AS 4.0.5
¿Debería obtener una Certificación en Dirección de Proyectos?
Obtener una certificación es un paso importante en el desarrollo profesional pues reconoce a individuos competentes y calificados.
Conceptos básicos de Ruby on Rails incluyendo:
- Controladores y acciones
- Rutas
- Configuraciones de applicacion
- Generación de modelos y Active Record
- Plantillas y vistas
- REST y recursos
Además de dos ejemplos prácticos:
- Página con mensaje 'Hola Mundo'
- MiniAplicación de blogs
JBossAS: Desarrollo con Java Server FacesAitor Acedo
JBossAS: Desarrollo con Java Server Faces es un curso en español para introducir la tecnología JSF en el desarrollo de interfaces en aplicaciones web y realizar despliegues en el servidor JBoss AS 4.0.5
¿Debería obtener una Certificación en Dirección de Proyectos?
Obtener una certificación es un paso importante en el desarrollo profesional pues reconoce a individuos competentes y calificados.
El curso de Marketing Digital es una formación teórica-práctica en la aplicación de las mejores prácticas para la difusión a través de los medios en línea (Internet). El Curso Marketing Digital ofrece un curso estratégico de marketing online que permite a los participantes preparar una campaña de marketing en Internet. Además usted será capaz de evaluar el rendimiento de las campañas de marketing digital y cómo generar mejores resultados.
En el Curso de Marketing Digital, los temas y herramientas como el marketing en buscadores, enlaces patrocinados, email marketing, sitios de comparación de precios, monitoreo de tráfico y Google Analytics se presentan y analizan de forma práctica y objetiva.
Vortrag OMT2010 IHK Frankfurt. Weitere Informationen und Linkliste unter: http://de.nicole-simon.eu/social-media-fur-kmu-vortrag-omt2010-ihk-frankfurt-5
Presentación para la Facultad de Ciencias Económicas (UBA), Curso de Dirección General sobre la metodología del PMI publicada en la tercera edición de su libro PMBOK.2004
3D-Welten für handlungsorientiertes Lernen
Teil 2 des Vortrages: "Lernen in Gruppen"
Matthias Rückel, 04. Februar 2009, LEARNTEC
Der Schwerpunkt liegt auf potentiellen Kollaborations und Kooperationsszenarien, die virtuelle Welten für Lernszenarien bieten.
YP-S3 ist so schoen bunt und gerade mal so gross wie ein Eis am Stil. Spass soll er machen, Musik, Videos und auch Spiele fuer die Unterhaltung liefern.
Este verano llegan a ENCAMINA “Los Imprescindibles”, unos superhéroes muy especiales que vienen dispuestos a combatir el aburrimiento y pasarte todos sus superpoderes.
El primero en aterrizar ha sido .Net Core.
En “Los Imprescindibles de .Net Core“, compartimos contigo las reflexiones y valoraciones que Alberto Díaz, Adrián Díaz y Juan Carlos Martínez han hecho sobre cómo usarlo, sus escenarios, versionados, integraciones, etc.
Security is a basic element, working on a new platform inevitably involves knowing the new security features that we have in mind. In this session we will talk about all the possibilities we have, security based on traditional identity, claims and federation.
Descubriendo Ruby on Rails (Desarrollo Agil de Aplicaciones Web)lenny
Esta es la presentación correspondiente a la charla "Descubriendo Ruby on Rails: Desarrollo Agil de Aplicaciones Web" dictada el 5 de Junio de 2007 por Juan Maria Martinez Arce y Carlos Kozuszko, ambos miembros de INSIGNIA (www.insignia4u.com); en el marco de la "Semana de la Ingenieria 2007".
Esta propuesta se basa en programación orientada a objeto y en el patrón arquitectónico Modelo Vista Controlador (MVC). La aplicación sistemática del patrón MVC facilita el desarrollo de software de calidad, entendido como aquel que tiene atributos de usabilidad, confiabilidad, robustez y funcionalidad.
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Telefónica
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0xWord escrito por Ibón Reinoso ( https://mypublicinbox.com/IBhone ) con Prólogo de Chema Alonso ( https://mypublicinbox.com/ChemaAlonso ). Puedes comprarlo aquí: https://0xword.com/es/libros/233-big-data-tecnologias-para-arquitecturas-data-centric.html
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
Recopilación de los puntos más interesantes de diversas presentaciones, desde los visionarios conceptos de Alan Turing, pasando por la paradoja de Hans Moravec y la descripcion de Singularidad de Max Tegmark, hasta los innovadores avances de ChatGPT, y de cómo la IA está transformando la seguridad digital y protegiendo nuestras vidas.
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
Actualmente, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital, siendo este un componente electrónico, por tanto se ha desarrollado y se ofrece un amplio rango de soluciones al problema del almacenamiento de datos.
Estructuras básicas_ conceptos de programación (1).docx
Grails: Framework para el desarrollo de aplicaciones Web No 5
1. Grails: Framework
para el desarrollo de
aplicaciones Web (5ta Parte)
Grails es un framework orientado al desarrollo de aplicaciones web de forma sencilla,
rápida y divertida.
métodos para producir diferentes tipos de
hashes, entre los más usados se encuentran:
✔ DigestUtils.md5(java.lang.String
data): Este método produce un
elemento de 16 bytes usando el
mecanismo MD5
✔ DigestUtils..md5Hex(java.lang.Strin
Introducción g data): Este método crea una
Dentro el proceso de desarrollo de cadena hexadecimal de 32 caracteres
aplicaciones web, la autenticación es uno de usando el mecanismo MD5
los más importantes, ya que éste permitirá, ✔ DigestUtils.shaHex(java.lang.String
realizar los controles de acceso por parte de data): Este método crea una cadena
los usuarios a las distintas partes del hexadecimal de 32 caracteres pero
sistema. usa el mecanismo SHA-1.
Autenticación Control de acceso
por lo general este proceso consiste, en Dentro de este proceso, se consideran los
desplegar un formulario donde el usuario siguientes elementos:
deberá acceder su nombre de usuario y su
contraseña, estos datos son enviados al ✔ Validación de la sesión
servidor y contrastados con alguna entrada ✔ Usuarios
en una base de datos, para luego permitir o
✔ Roles
denegar el acceso en caso de que
correspondan o no. ✔ Permisos
✔ Reglas
Hashing
Por lo general las contraseñas son sometidas Captcha
a un hash antes de ser almacenadas como
una forma de precautelar la seguridad de las
mismas.
En Grails una técnica común para realizar Son representaciones gráficas de una
esta tarea es usar DigestUtils en el paquete cadena alfanumérica generada
org.apache.commons.codec.digest.Diges
aleatoriamente, y que sirve para validar los
tUtils. Esta clase contiene una variedad de datos introducidos dentro un formulario, así
2. mismo también previenen el spam en los registro dentro el UserController.
formularios. Adicionalmente haremos uso de un
CAPTCHA , para lo cual debemos instalar el
plugin correspondiente
Proceso de autenticación (http://www.boomchucka.com/grails/gra
Para crear una solución de seguridad para ilsCaptcha0.5.zip)
nuestras aplicaciones web, debemos grails install-plugin
considerar los siguientes aspectos dentro su http://www.boomchucka.com/grails/grails-
Captcha-0.5.zip
diseño e implementación
Registro de usuarios
✔
Proceso de Login
✔ Proceso de login
Para establecer un proceso de login dentro
✔ Registros de acceso y salida de de nuestra aplicación, debemos realizar las
usuarios siguientes actividades:
✔ Asegurar los controles ✔ Crear el controlador de login
✔ Crear el formulario de login
Registro de usuarios ✔ Registrar la sesión del usuario
Para ésto debemos generar el formulario de
registro (registro.gsp) , una acción para el
Para crear el controlador de login, debemos ejecutar:
grails create-controller login
Dentro el archivo grailsapp/controllers/LoginController.groovy debemos incluir el
siguiente código:
class LoginController {
def index = { redirect(action:login,params:params) }
def login = {}
def manejaLogin = {
def user = User.findByUsuarioAndPasword(params.usuario, params.pasword)
if (!user) {
flash.message = "Usuario no encontrado: ${params.usuario}"
redirect(action:'login')
return
}
else
{
session.user = user
redirect(controller:'evento')
}
}
def logout = {
if(session.user) {
session.user = null
redirect(action:'login')
}
}
}
3. Este código básicamente permite manejar las acciones de login y logout, registrando o
anulando el registro de la sesión del usuario respectivamente.
Para que este controlador pueda funcionar correctamente precisamos crear una vista con el
siguiente contenido:
<html>
<head>
<title>Login Page</title>
<meta name="layout" content="main" />
</head>
<body>
<div class="body">
<g:if test="${flash.message}">
<div class="message">
${flash.message}
</div>
</g:if>
<p>
Bienvenido a Gestión de eventos
</p>
<form action="manejaLogin">
<span class='nameClear'><label for="usuario">Usuario:</label>
</span>
4. <td valign="top" class="value $
{hasErrors(bean:userInstance,field:'usuario','errors')}">
<input type="text" id="usuario" name="usuario" value="$
{fieldValue(bean:userInstance,field:'usuario')}"/>
</td>
<span class='nameClear'><label for="pasword">Password:</label>
<td valign="top" class="value $
{hasErrors(bean:userInstance,field:'pasword','errors')}">
<input type="password" id="pasword" name="pasword" value="$
{fieldValue(bean:userInstance,field:'pasword')}"/>
</td>
<div class="buttons">
<span class="button"><input class="save" type="submit" value="Login"
/></span>
</div>
</div>
</form>
</div>
</body>
</html>
El resultado de esta vista la podemos observar en el siguiente gráfico:
Una vez que el usuario haya introducido los datos correctos de usuario y contraseña, estos
deben ser registrados en la sesión, adicionalmente podemos desplegar los datos del usuario en
la sección TopBar de la pantalla y claro está desplegar la opción de logout; para esto debemos
realizar algunas modificaciones en la vista del TopBar, cuyo contendido deberá ser el siguiente:
grailsapp/views/common/_topbar.gsp
<div id="menu">
<nobr>
<g:if test="${session.user}">
<b>${session.user?.nombre} ${session.user?.apellido}</b> |
<g:link controller="login" action="logout">Logout</g:link>
</g:if>
<g:else>
<g:link controller="login" action="login">Login</g:link>
</g:else>
</nobr>
</div>
5. El resultado del proceso de login se muestra en el siguiente gráfico:
Asegurar los controles
Una práctica común dentro del desarrollo de aplicaciones web, es asegurar los controles de
acceso, referidos principalmente a controlar mediante un proceso de login (autenticación de
usuarios) el acceso a distintas partes de la aplicación. Para esto Grails posee distintos
mecanismos, algunos de ellos basados en plugins y otros basados en el uso de filtros.
Para nuestro caso haremos uso de filtros, que es el mecanismo más sencillo y rápido de
implementar. Para esto debemos crear una clase filters, cuyo contenido es el siguiente:
grailsapp/conf/SecurityFilters.groovy
class SecurityFilters {
def filters = {
GestionEventosFilter(controller:'*', action:'*') {
before = {
if(!session.user
&& !controllerName.equals('login')
&& !controllerName.equals('captcha')
&& ( !controllerName.equals('user')
&& !actionName.equals("registro"))
) {
redirect(controller:'login')
return false
}
}
}
}
}
6. El anterior código hará que los usuarios para acceder a cualquier parte de la aplicación
necesariamente tengan que autenticarse, dicho de otra forma si el usuario trata de acceder a
una URL de un módulo en específico de la aplicación, será redireccionado al módulo de login.
Referencias
[1] http://www.grails.org
[2] Getting Started with Grails
[3] The Definitive Guide to Grails
Autor
Esteban Saavedra López
Líder de la Comunidad ATIX (Oruro – Bolivia)
Activista de Software Libre en Bolivia
jesaavedra@opentelematics.org
http://jesaavedra.opentelematics.org