Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 16

Autenticación y Autorización

Por: Ing. Víctor M. Balta Alva ([email protected])

Acerca de Autenticación y Autorización

Esta aplicación hecha en NetBeans 7.1.2 y MySQL 5.5 sirve de modelo para implementar seguridad a
nuestro Sistema considerando:
 Autenticación: ingreso al Sistema de un Usuario mediante un password encriptado.
 Autorización: Usuario ingresado podrá ¿consulta?, ¿insertar?, ¿modificar?, ¿eliminar? u ¿otros?

Para ello, trabajaremos con la siguiente tabla:


Debemos considerar el hecho que cuando se trata de autenticación
hay que dar al Usuario la protección debida de su password, para eso
habrá que encriptar la columna password de la tabla usuarios.

En MySQL se puede implementar encriptación con AES (Advanced


Encryption Standard), solo necesitamos especificar que la columna
password sea del tipo BLOB o TINYBLOB (nuestro caso) y las funciones
AES codifican con una llave de 128-bits de longitud.

Para insertar un registro con un campo encriptado (nuestro caso a la


tabla usuarios) se procede de la siguiente forma:

INSERT INTO usuarios(apellidos, nombres, usuario, password, autorizacion)


VALUES ('Balta Alva', 'Victor Manuel', 'vbalta', AES_ENCRYPT('password', 'llave'), 'ADMIN')

La función AES_ENCRYPT('password', 'llave') lleva como primer argumento el password (como dato, en
este caso es password) del usuario, y como segundo llave (conjuntos de caracteres usados para
encriptar y en el futuro para desencriptar).

Si quisiéramos hacer un SELECT para ver los verdaderos passwords de los usuarios, tendríamos que dar la
llave y usar la función de MySQL para desencriptar: AES_DECRYPT(password, 'llave'), ejemplo:

SELECT apellidos, nombres, usuario, AES_DECRYPT(password,'llave') AS password, autorizacion


FROM usuarios

La función AES_DECRYPT(password, 'llave') lleva como primer argumento la columna de la tabla


password de la tabla usuarios, y como segundo la llave

Si es que no usa la función AES_DECRYPT(password, 'llave') sus consultas (SELECT) mostrarán caracteres
extraños para la columna password, así que no asustarse, está encriptado.

Si desea que nadie tenga acceso al password y llave, excepto el dueño (usuario), entonces la función
tendría el siguiente formato: AES_ENCRYPT(password, password), donde password es una variable
ingresada al Sistema. En este caso, si el usuario pierde su password, tendrá que ser eliminado para
volverse a crear.

Nuestra solución tendrá la siguiente pantalla inicial de autenticación y los menús respectivas del ADMIN
y CLIENT según la autenticación:

17/09/2010 1
Autenticación y Autorización
Por: Ing. Víctor M. Balta Alva ([email protected])

Menú de un ADMIN autenticado, que en teoría puede realizar la gestión de las categorías y productos
que la empresa comercializa o produce. Sus páginas serán seguras y no habrá acceso a ellas sin la
contraseña respectiva:

Menú de un CLIENT autenticado, que en teoría puede ver promociones que la empresa ofrece. Sus
páginas serán seguras y no habrá acceso a ellas sin la contraseña respectiva:

Considerar el hecho que las páginas visitadas por el autenticado están protegidas y solo él es el único
que accede a ellas, como la gestión con las cuentas de correo en: yahoo, hotmail, gmail, …

Consideraciones para el desarrollo del proyecto


Para el desarrollo del proyecto considerar lo siguiente:
 Debe tener instalado Java Standard Edition. La versión a la fecha es JDK 7 Update 4. Si gusta más
información al respecto puede ver nuestra separata gratuita “JDK 7 Update 2 – Instalación”.
 Debe tener instalado MySQL. La versión a la fecha es MySQL 5.5. Si gusta más información al
respecto puede ver nuestra separata gratuita “MySQL 5.5 – Instalación”.
 Debe tener instalado NetBeans 7.1.2. Si gusta más información al respecto puede ver nuestra
separata gratuita “NetBeans 7.1 - Instalación”.
El nivel de la separata es basico-intermedio en conocimientos de Java y NetBeans.

17/09/2010 2
Autenticación y Autorización
Por: Ing. Víctor M. Balta Alva ([email protected])

Consideraciones a www.parainformaticos.com
Si al seguir las instrucciones de esta separata encuentra diferencias o puntos no mencionados, la
información que nos pueda proporcionar es muy importante, a fin de hacer las mejoras continuas para
la entera satisfacción de nuestros lectores. Puede entrar http://www.parainformaticos.com y desde allí
escribirnos, además encontrará otras separatas como esta y otros servicios.

Ejecución del script dbaa.sql

Crear la base de datos


dbaa, y ejecutar en ella
el script dbaa.sql que
viene con esta separata.
Para ello activar la ficha
Services de NetBeans,
si no estuviese visible,
revise el menú Window, desde allí la puede hacer visible. Entonces, en la ficha Services clic derecho
sobre MySQL Server y seleccione Create Database, en el diálogo que se muestra digite dbaa.

Una vez creada la base


de datos dbaa, active el
menú File / Open File de
NetBeans y abra el
archivo dbaa.sql.
Del combo Connection
seleccione la conexión a
la base de datos dbaa y
clic en el ícono Run SQL
como muestra la figura encima de este texto. Luego, debe añadir 2 usuarios, uno como ADMIN y
otro como CLIENT, guiarse del archivo AES.txt que viene con esta separata. Entonces, la base de datos
dbaa con la tabla usuarios ha sido creada. Si desea más información al respecto, puede ver nuestras
separatas:
 MySQL 5.5 – Instalacion (free)
 MySQL 5.5 – Registro en NetBeans 7.1 (free)

Contenido de archivo AES.txt para añadir 2 usuarios iniciales:

INSERT INTO usuarios(apellidos,nombres,usuario,password,autorizacion)


VALUES('Balta Alva', 'Victor Manuel', 'vbalta', AES_ENCRYPT('12345','llave'), 'ADMIN')

INSERT INTO usuarios(apellidos,nombres,usuario,password,autorizacion)


VALUES('Vasquez Paragulla', 'Juan Julio', 'jvasquez', AES_ENCRYPT('12345','llave'), 'CLIENT')

17/09/2010 3
Autenticación y Autorización
Por: Ing. Víctor M. Balta Alva ([email protected])

Desarrollo del proyecto login

En informática, se usa el término login (ingresar) como un proceso mediante el cual un usuario ingresa a
un sistema informático, utilizando un pseudónimo (puede ser dirección de correo electrónico) y un
password. Asimismo, para desconectarse del sistema puede hacer logout (desconectar) para terminar
su sesión de manejo de su información.

Para iniciar, debemos crear el proyecto login de categoría Java Web / Web Application para el servidor
Apache Tomcat sin seleccionar frameworks. Luego, añadir al nodo Libraries las bibliotecas MySQL JDBC
Driver.

Esta debería ser la estructura inicial del proyecto:

17/09/2010 4
Autenticación y Autorización
Por: Ing. Víctor M. Balta Alva ([email protected])

Luego, editar el archivo context.xml en Web Pages / META-INF para conectarse con dbaa

Luego de la configuración inicial del proyecto, corresponde crear los documentos que darán solución a la
aplicación en resumen siguiente:

1. Crear el objeto de transferencia de datos: Usuarios


2. Crear la interface DAO: DaoUsuarios
3. Implementación DAO: DaoUsuariosImpl
4. Creación del ServletUsuarios
5. Finalmente, crear la vistas (JSPs)

17/09/2010 5
Autenticación y Autorización
Por: Ing. Víctor M. Balta Alva ([email protected])

1. Crear el objetos de transferencia de datos: Usuarios

Los objetos de transferencia de datos o DTO sirven para el encapsulamiento y transferencia de


información entre los diversos protagonistas del proyecto. En nuestro caso en el paquete dto crear la
clase Usuarios con el siguiente código:

17/09/2010 6
Autenticación y Autorización
Por: Ing. Víctor M. Balta Alva ([email protected])

2. Crear la interface DAO: DaoUsuarios

Antes de desarrollar la aplicación debemos planificarla, por ello en el paquete model.dao crear la
interface DaoUsuarios con el siguiente contenido:

Para nuestra aplicación solo planificamos la autenticación del usuario.

17/09/2010 7
Autenticación y Autorización
Por: Ing. Víctor M. Balta Alva ([email protected])

3. Implementación DAO: DaoUsuariosImpl

Con la planificación establecida en DaoUsuarios entonces toca la implementación, por lo tanto en el


paquete dao.model.impl crear la clase DaoUsuariosImpl con el siguiente contenido:

17/09/2010 8
Autenticación y Autorización
Por: Ing. Víctor M. Balta Alva ([email protected])

17/09/2010 9
Autenticación y Autorización
Por: Ing. Víctor M. Balta Alva ([email protected])

4. Creación del ServletUsuarios

Terminamos la programación por el lado del servidor creando en el paquete web.servlets a


ServletUsuarios que tiene por contenido:

17/09/2010 10
Autenticación y Autorización
Por: Ing. Víctor M. Balta Alva ([email protected])

17/09/2010 11
Autenticación y Autorización
Por: Ing. Víctor M. Balta Alva ([email protected])

La estructura del nodo Source Packages se verá así:

17/09/2010 12
Autenticación y Autorización
Por: Ing. Víctor M. Balta Alva ([email protected])

5. La vista del proyecto (JSPs)

Ahora corresponde dedicarnos a la vista de la aplicación, por lo tanto empecemos copiando la carpeta
jspf en WEB-INF, luego css, images, js, view e index.jsp (elimine el creado por el proyecto) al nodo Web
Pages. Todos los archivos han sido proporcionados con esta separata:

Consideraciones:
 La carpeta jspf contiene los fragmentos de JSP (como menú y seguridad) que insertaremos en
las páginas de la aplicación.
 La carpeta view/admin contendrá los documentos del administrador.
 La carpeta view/client contendrá los documentos de los clientes.
 En la carpeta js tenemos a jQuery y su plugin para desarrollar menús.

17/09/2010 13
Autenticación y Autorización
Por: Ing. Víctor M. Balta Alva ([email protected])

El contenido de index.jsp principal:

17/09/2010 14
Autenticación y Autorización
Por: Ing. Víctor M. Balta Alva ([email protected])

17/09/2010 15
Autenticación y Autorización
Por: Ing. Víctor M. Balta Alva ([email protected])

El contenido de view/admin/index.jsp:

Salida para el administrador, con menú de opciones para futuras implementaciones:

¡Gracias por leer nuestras Separatas!


¡Para Informáticos facilita tu aprendizaje!

17/09/2010 16

También podría gustarte