Giter Site home page Giter Site logo

arep-lab03's Introduction

Aplicación distribuida segura en todos sus frentes

Desarrolle una aplicación Web segura con los siguientes requerimientos:

  1. Debe permitir un acceso seguro desde el browser a la aplicación. Es decir debe garantizar autenticación, autorización e integridad de usuarios.

  2. Debe tener al menos dos computadores comunicacndose entre ellos y el acceso de servicios remotos debe garantizar: autenticación, autorización e integridad entre los servicios. Nadie puede invocar los servicios si no está autorizado.

  3. Explique como escalaría su arquitectura de seguridad para incorporar nuevos servicios.

Entregables:

  1. Código en github, bien documentado.
  2. Informe que describe la arquitectura de seguridad de su prototipo. (en el README)
  3. Video de experimento en AWS

Ayudas:

https://github.com/tipsy/spark-ssl

https://www.baeldung.com/spring-boot-https-self-signed-certificate

https://docs.oracle.com/cd/E19798-01/821-1841/gjrgy/

https://docs.oracle.com/cd/E19509-01/820-3503/ggfen/index.html

https://aws.amazon.com/es/serverless/build-a-web-app/

Arquitectura propuesta

Prerrequisitos

Configuracion ralizada para los certificados

Para la generacion de certificados, se utilizo la siguiente contraseña

public class Password {
    public static String keyStorePassword = "123456";
}
  1. Se creo una carpeta llamada keystores en la raiz del proyecto

  2. Se genero un certificado digital con el siguiente comando

    keytool -genkeypair -alias ecikeypair -keyalg RSA -keysize 2048 -storetype PKCS12 -keystore ecikeystore.p12 -validity 3650
    

    Se debe de llenar con la siguiente informacion( de manera local)

    localhost-> aqui debe ir el nombre del servidor
    AREP
    ECI
    Bogota
    Bogota D.C.
    CO
    yes
    
    02-KeyStore-Config.jpg
  3. Exportar el certificado a un archivo

    keytool -export -keystore ./ecikeystore.p12 -alias ecikeypair -file ecicert.cer
    
    03-Exporting-keystore.jpg
  4. Ahora importaremos el certificado a un TrusStore // el cual nos dira que certificados de las entidades debemos confiar

    keytool -import -file ./ecicert.cer -alias firstCA -keystore myTrustStore
    
    04-Importing-keystore.jpg

Instrucciones de ejecución local

  1. Desde cmd clonar el repositorio

    https://github.com/Rincon10/AREP-LAB03.git
    
  2. Ubicarse en la carpeta AREP-LAB03 y borraremos todas las dependencias y modulos que puedan exisitir de los binarios del proyecto, ademas realizamos la compilación y empaquetamiento del proyecto, con el comando.

    mvn clean install
    
  3. Ahora procederemos a iniciar el servidor HelloServer

Para Unix

java -cp "target/classes:target/dependency/*" edu.escuelaing.arep.server.HelloServer

Para Windows

java -cp "target/classes;target/dependency/*" edu.escuelaing.arep.server.HelloServer
  1. Ejecutamos el proyecto
mvn exec:java -Dexec.mainClass="edu.escuelaing.arep.App"
  1. Una vez tengamos el proyecto en ejecucion, desde nuestro navegador colocaremos la ruta
https://localhost:5000/

y nos saldra la siguiente ventana

login

Cabe recalcar que el login solo detectara los siguientes usuarios

private static void generateUsers() {
    users.put("Rincon10", hasher.hash("123456"));
    users.put("test", hasher.hash("test"));
}

Usuarios no autenticados o no existentes

badRequest


badRequest-2

Usuarios existentes y autenticados

goodRequest


goodRequest-2

arep-lab03's People

Contributors

rincon10 avatar

Stargazers

Juan David Murillo avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.