Está en la página 1de 18

TALLER FINAL

DESARROLLO DE SOFTWARE SEGURO

PRESENTADO POR:

JOAQUIN MAURICIO POSADA CUESTA


CC: 12.020.435
HERNAN DARIO BORJA QUIROZ
CC: 71185292
JUAN PABLO BETANCURT ZAMARRA
CC: 1000893309

DESARROLLO DE SOFTWARE SEGURO

PROFESOR
JULIO CESAR MARTINEZ

INSTITUCION UNIVERSITARIA DIGITAL DE ANTIOQUIA


Octubre de 2021
INTRODUCCION
Mediante la realización del siguiente trabajo, el cual contempla la realización de un
proyecto utilizando la herramienta Spring Tooll guiados por nuestro tutor, se contemplan el
manejo de diferentes excepciones y se crea un CRUD (Create, Read, Update, Delete) con
el Framework Spring Boot para una base de datos la cual es creada utilizando el programa
MySql.
En el programa Spring Tooll, se asignan los roles que tiene cada usuario para el
ingreso a la aplicación y se conceden los permisos necesarios para la utilización de la
misma independientemente del rol que este desempeñando cada usuario al momento de
manejarla. También se hacen manejos de excepciones y métodos que permiten la adecuada
manipulación de la aplicación.
OBJETIVOS

Como objetivo principal a la hora de la realización de esta actividad, es tratar de


comprender y entender cómo funcionan las diferentes anotaciones y excepciones creadas a
la hora de la realización del proyecto los cuales nos enseñan a comprender:

 Funcionamiento y manejo de Excepciones y anotaciones en Spring Tooll

 Creación de Base de Datos en MySQL

 Mapeo de Base de Datos utilizando los diferentes tipos de clases e interfaces


para importar la información entre la base de datos y el diseño de la misma.
Para la creación de este proyecto final, primeramente, en este caso se utiliza la
herramienta Spring Tooll en la cual se procede a realizar las diferentes configuraciones para
crear nuestra API

se hace necesario la creación de la base de datos utilizando la herramienta MySQL un


archivo el cual llamamos SCRIP y en la cual se crea la siguiente línea de código
Código que se generó a la hora de la realización de la base de datos en MySQL:
DROP DATABASE IF EXISTS spring_security;

CREATE DATABASE IF NOT EXISTS spring_security;

USE spring_security;

-- TABLA ROLES

CREATE TABLE IF NOT EXISTS roles(

id INT NOT NULL AUTO_INCREMENT,

nombre VARCHAR(45) NOT NULL,

descripcion VARCHAR(100) NULL,

PRIMARY KEY(id)

);

-- TABLA USUARIOS

CREATE TABLE IF NOT EXISTS usuarios(

id INT NOT NULL AUTO_INCREMENT,

username VARCHAR(120) NOT NULL,

nombre VARCHAR(120) NOT NULL,

apellido VARCHAR(120) NULL,

password VARCHAR(250) NOT NULL,

fecha_nacimiento DATE NULL,

enabled TINYINT DEFAULT 1,

PRIMARY KEY(id),

UNIQUE(username)

);

-- TABLA ROLES_USUARIOS

CREATE TABLE IF NOT EXISTS roles_usuarios(

roles_id INT NOT NULL,

usuarios_id INT NOT NULL,

PRIMARY KEY(roles_id, usuarios_id),

FOREIGN KEY(roles_id) REFERENCES roles(id),

FOREIGN KEY(usuarios_id) REFERENCES usuarios(id)

);

-- TABLA DE EMPLEADOS

CREATE TABLE IF NOT EXISTS empleados(


id INT NOT NULL AUTO_INCREMENT,

nombre VARCHAR(45) NOT NULL,

apellidos VARCHAR(120) NOT NULL,

sueldo DOUBLE NOT NULL,

usuarios_id INT NOT NULL,

PRIMARY KEY(id),

FOREIGN KEY(usuarios_id) REFERENCES usuarios(id)

);

/* POPULATION DE LAS TABLAS*/

-- roles

INSERT INTO roles(nombre,descripcion)

VALUES ('ROLE_ADMIN', 'Administrador del sistema');

INSERT INTO roles(nombre,descripcion)

VALUES ('ROLE_USER', 'Usuario normal del sistema');

-- usuarios

INSERT INTO usuarios(username,nombre,apellido,password,fecha_nacimiento,enabled)

VALUES ('julio@iudigital.edu.co', 'Julio','Martinez',

'$2a$10$9MBY9avhVHwfOiKC78lacOylmrGoxvqZLZbEV8Ns928f7tGI0rUqG', '1985-08-05',1);

INSERT INTO usuarios(username,nombre,apellido,password,fecha_nacimiento,enabled)

VALUES ('juliana@iudigital.edu.co', 'Juliana',

'Martinez','$2a$10$.pHuqYAR5Q1bPJod6IYx6e5aPKWRolNAnfxc5IVkgT1MTAEUXu0K2', '2000-07-16',1);

-- roles_usuarios

INSERT INTO roles_usuarios(roles_id,usuarios_id)

VALUES (1,1);

INSERT INTO roles_usuarios(roles_id,usuarios_id)

VALUES (2,1);

INSERT INTO roles_usuarios(roles_id,usuarios_id)

VALUES (2,2);

-- empleados

INSERT INTO empleados(nombre,apellidos,sueldo,usuarios_id)

VALUES ('Juliana', 'Martinez', 4500, 1);

INSERT INTO empleados(nombre,apellidos,sueldo,usuarios_id)

VALUES ('Ana', 'Reyes', 5000, 1);


En la anterior línea de código, se realiza la creación de las tablas las cuales se llaman:
USUARIO, ROLES Y EMPLEADOS.
También se crean los campos específicos para cada tabla creada en la base de datos,
se asignan las llaves primarias (Primary Key) y las llaves foráneas (Foreing Key) con sus
respectivas referencias para enlazar las tablas dentro de la base de datos, se realiza
también un ingreso de valores con la sentencia INSERT INTO para cada una de las tablas.
Luego se procede a crear dentro de la Herramienta Spring Tooll el archivo
application.properties en el cual se expecifican los medios de conexión y enlace que se va a
emplear para conectar la base de datos de MySQL con el CRUD de Spring Tooll

En la anterior imagen se hace la importación de las anotaciones


@SpringBootAplication
@Autowired
@Override
Con sus recpectivo manejo de excepciones para la creación de la contraseña de nuestra
aplicación y asi hacerla mas segura.

Paquete AUTH

Dentro del paquete auth se crea el archivo tipo clase Autorization.ServerConfig, en el


cual hacemos manejo de encriptación de contraseñas y controlamos los servicios de
seguridad y autorización para el control de acceso a nuestra base de datos.

Este mismo paquete contiene el archivo Resource.ServerConfig, en donde se realizan


las diferentes configuraciones de los métodos que van a emplear los usuarios con sus
diferentes roles como son los métodos (POST, DELETE, GET y PUT).
Dentro de este paquete también se encuentra un archivo clase llamado:
SpringSecurityConfig El cual implementa los parámetros de seguridad a nivel de métodos de
Spring y se establece los manejos de las excepciones y autorizaciones correspondiente.

Se crea el archivo TokenMoreInfo, el cual es un archivo de clase dentro del paquete


auth que se encarga de comprobar la identidad del usuario mediante la especificación de los
roles asignados dentro de la base de datos
Paquete Config

Dentro de este paquete encontramos un archivo el cual llamamos RestExceptionHandler


que es de tipo clase en el que se controlan los controles de acceso y se configura los
métodos posibles que pueden tener nuestra base de datos.
Paquete Controller

Dentro de este paquete se encuentra el archivo tipo clase llamado


EmpleadoController, en el cual se realizan la definición y se establecen diferentes roles que
puede tener un empleado en nuestra aplicación

Paquete Dto.

Se encuentra el archivo tipo clase EmpleadoDto, en el cual se configuran los


diferentes atributos utilizando los empleados en la tabla creada y se fijan los Getteres y
Setteres.
Paquete Exception

Este paquete contiene los diferentes archivos en el cual manejamos las excpeciones
para la conexión, métodos de autenticación de los usuarios de la base de datos y manejo de
las conexiones a nuestra base de datos mediante cualquier método de acceso a esta misma
Paquete Model
Este paquete contiene los archivos tipo clase que son las tablas que vamos a utilizar en
nuestra base de datos, esto con el fin de realizar un mapeo por medio de Spring para la
conexión con la base de datos. Tambien se hace necesario la creación de Getteres y
Setteres para autenticar la información.
Paquete Repository

Este paquete contiene los archivos tipo Interfaz los cuales se encargaran de manejar la
información de los usuarios y empleados.
CONCLUSION

El desarrollo de este proyecto, nos enseña la manera de como podemos por medio de
herramientas tecnologicas como lo son las gestores de bases de datos y las aplicaciones
como Spring Tooll, Postman, PHPMyAdmin enlazar la informacion de forma facil y segura,
esto con el fin de hacer una mayor optimizacion y brindar mayor seguridad a la hora de
acceder a la informacion en una base de datos.

También podría gustarte