Skip to content

Commit

Permalink
Merge pull request #40 from jokoframework/develop
Browse files Browse the repository at this point in the history
Release 1.1.4
  • Loading branch information
alefq authored Oct 9, 2019
2 parents b51956c + 043242f commit 3236ae6
Show file tree
Hide file tree
Showing 34 changed files with 1,206 additions and 404 deletions.
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
.classpath
.idea/*
**/.idea
.project
.settings
.settings/*
Expand All @@ -15,4 +16,4 @@ out.txt
conf/*
db/*.db
*.db
/src/main/resources/application.properties
/src/main/resources/application.properties
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@

Archivo para documentar cambios más importantes de la librería.


## [v1.1.0]

Cambia la versión base a Spring Boot 2.1.5 y Java 11
* Cambio de API para Spring DATA
* Cambio de Log4j a su versión 2
* Adaptación de properties para conexiones a Postgresql

## [v1.0.0]

### 1) Upgrade a Spring 1.5.10
Expand Down
70 changes: 50 additions & 20 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
# Joko Security

[![Codacy Badge](https://api.codacy.com/project/badge/Grade/959a1567f7484130b3943bbf7760186c)](https://www.codacy.com/app/alefq/security?utm_source=github.com&utm_medium=referral&utm_content=jokoframework/security&utm_campaign=badger)

Joko Security provee la capacidad de realizar autenticación y autorización por
.medio de Tokens JWT. Se puede utilizar de dos maneras, como un componente
separado que emite tokens o embebido como una librería dentro de otra aplicación
Expand Down Expand Up @@ -55,6 +53,9 @@ varios PROFILE_DIR segun se requiera. Por ejemplo:
En el anterior ejemplo existen dos PROFILE_DIR dentro del joko-demo, el
primero para development y el segundo con datos de quality assurance.

Obs.: Un archivo de ejemplo para el application.properties se encuentra en
`src/main/resources/application.properties`

### Step 2) Configuración del archivo "development.vars"

Se debe configurar el archivo "development.vars", que servirá para la
Expand Down Expand Up @@ -183,13 +184,14 @@ Se debe implementar esta interfaz para:
realiza las configuraciones básicas requeridas en proyectos de este tipo.

## Ejemplos
Dentro del directorio "samples" se puede observar ejemplos que muestran
Dentro del directorio "samples" se puede observar ejemplos que muestran como
utilizar joko-security

## Obtener el jar
El proyecto no está publicado actualmente en ningún maven repository. Por lo tanto, se requiere bajar el código fuente y realizar la instalación del jar.
El proyecto no está publicado actualmente en ningún maven repository. Por lo tanto, se requiere bajar el código fuente y realizar la instalación del jar. En la instalación del jar se correran los Unit Tests por defecto, se debe prepara la BD como se define en la sección "Unit Tests"


mvn -Dspring.config.location=file:///opt/joko/development/application
.properties install
mvn -Dext.prop.dir=/opt/joko-security/test -Dspring.config.location=file:///opt/joko-security/dev/application.properties install

Un archivo de ejemplo de application.properties puede obtenerse en src/main/resources/application.properties.example
## Funcionalidades proveídas por Joko
Expand All @@ -214,29 +216,57 @@ joko-security cuenta con una clase que contiene tests unitarios, para las funcio
Se puede correr los tests mediante maven

1) Actualizar los datos de una BD fresca con:

$ ./scripts/updater seed src/main/resources/db/sql/seed-test.sql
$ ./scripts/updater seed src/main/resources/db/sql/seed-test.sql

2) Correr MVN
2) Correr MVN
mvn -Dext.prop.dir=/opt/joko-security/dev -Dspring.config.location=file:///opt/joko-security/dev/application.properties test

# Configuraciones Complementarias
Algunas configuraciones extras que fueron necesarias durante la implementacion en ciertos proyectos.

# Configuraciones
En esta sección describimos la configuracion que se debería de tener en
cuenta para que funcione correctamente joko-security

Toda la configuración se realiza en el archivo application.properties y el
archivo `src/main/resources/application.properties` contiene un ejemplo
comentado con las opciones

## Configuraciones Basicas
Es necesario tener un directorio /conf/secret.key para que los test que se
realicen no tengan problema al encontrar el archivo de la clave. Sin esto es
probable que 10 de los 11 test le den un problemas de Exception, al no encontrar
dicho directorio. Observacion: este archivo tampoco puede ser nulo o vacio!
El sistema necesita un secreto para firmar los tokens. Este secreto puede ser
guradado en dos lugares:
* BD: Si se guarda en la Base de datos va a la tabla joko_security.keychain
* FILE: Si va al filesystem se debe configurar la propiedad joko.secret.file

ATENCIÓN: Es MUY importante que este secreto no sea accedido por terceras
personas. La recomendacion para esto es:
* BD: En este caso asigne permisos a la tabla con solo lectura y solamente
para el usuario que se utiliza en la aplicacion
* FILE: Asigne permisos de lecutra y solo para el usuario que se utiliza al
momento de levantar la aplicacion.

Obs.:En modo BD puede dejarse sin crear un archivo y el sistema va a crear
un secreto la primera vez que se levanta.

## Uso del OTP

Primeramente hay que ver si quiere registrar en el usuario la semilla que seria utilizada para generar el OTP que sera comparado
con el OTP que ingresa:
* Ingresar Semilla: si quiere ingresar una semilla, debe ir a la pagina https://freeotp.github.io/qrcode.html. En esa pagina debe completar
los datos opcionales como el nombre de la cuenta relacionada a la semilla, y poner la opcion "TIMEOUT" para que funcione como Timed-OTP.
Esta aplicacion genera un QR que debe ser escaneado por su telefono, utilizando el programa FreeOTP que se puede descargar para Android.
La semilla solo se ingresa una vez por lo que en nuevos logins, el usuario solo debe completar el campo de "user" y "password", y eliminar
el campo de semilla.
* No ingresar una semilla: si no desea en el momento ingresar una semilla, puede simplemente eliminar el campo de "seed" y el token sera
generado.

Luego de tener una semilla en la DB, se procede al siguiente paso, el cual tendran 2 opciones:
* Sin semilla guardada: solo debe ingresar un "0" en la linea de OTP, si realmente no tiene una semilla guardada, entonces se le consedera
el token, de lo contrario se le dira que el OTP assignado no concuerda con el OTP generado en el programa.
* Con semilla guardada: en la aplicacion FreeOTP en el celular podra ver el codigo de 6 digitos que debe ingresar para el parametro de OTP
en el servidor.

## Configuraciones del POM file Asegurese que las versiones de las dependencias
en los archivos pom.xml tengan la misma version, esto le generara problemas a la
hora de querer levantar el servicio.

## Configuraciones del application.properties Tenga en cuenta los valores que
deben tomar las variables en el archivo de configuracion del
application.properties, que es el encargado de obtener los valores de las
configuraciones que usteded asigno a su DB.

# Changelog
Para una descripcion detallada de las versiones ver el archivo de [Changelog](CHANGELOG.md)
Expand Down
243 changes: 243 additions & 0 deletions dependency-check-suppressions.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,243 @@
<?xml version="1.0" encoding="UTF-8"?>
<suppressions xmlns="https://jeremylong.github.io/DependencyCheck/dependency-suppression.1.2.xsd">
<!-- START CVE-2018-1258 ***************************************************
Falso positivo. https://pivotal.io/security/cve-2018-1258
Users leveraging Spring Framework 4.x (Spring Security 4.x or Spring Boot 1.x) are not impacted so no steps are necessary.
-->
<suppress>
<notes>
<![CDATA[
file name: spring-boot-starter-security-1.5.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.boot:spring-boot-starter-security:.*$</gav>
<cve>CVE-2018-1258</cve>
</suppress>
<!--suppress>
<notes>
<![CDATA[
file name: spring-security-crypto-4.2.12.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.security:spring-security-crypto:.*$</gav>
<cve>CVE-2018-1258</cve>
</suppress-->
<suppress>
<notes>
<![CDATA[
file name: spring-security-web-4.2.12.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.security:spring-security-web:.*$</gav>
<cve>CVE-2018-1258</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-security-core-5.0.1.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.security:spring-security-core:.*$</gav>
<cve>CVE-2018-1258</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-security-config-4.2.12.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.security:spring-security-config:.*$</gav>
<cve>CVE-2018-1258</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-boot-starter-tomcat-1.5.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.boot:spring-boot-starter-tomcat:.*$</gav>
<cve>CVE-2011-2730</cve>
</suppress>
<!-- END
False positive. https://pivotal.io/security/cve-2018-1258
Users leveraging Spring Framework 4.x (Spring Security 4.x or Spring Boot 1.x) are not impacted so no steps are necessary.
***************************************** -->
<!-- Falso positivo. Esto está relacionado con Ruby no Java. https://github.com/nov/json-jwt/pull/62 -->
<suppress>
<notes>
<![CDATA[
file name: jjwt-0.9.1.jar
]]>
</notes>
<gav regex="true">^io\.jsonwebtoken:jjwt:.*$</gav>
<cpe>cpe:/a:json-jwt_project:json-jwt</cpe>
</suppress>
<!-- Depende de Spring Boot que a su vez depende de Hibernate
https://hibernate.atlassian.net/browse/HHH-12322 -->
<suppress>
<notes>
<![CDATA[
file name: dom4j-1.6.1.jar
]]>
</notes>
<gav regex="true">^dom4j:dom4j:.*$</gav>
<cpe>cpe:/a:dom4j_project:dom4j</cpe>
</suppress>
<!-- START CVE-2011-2730 ***************************************************
Falsos positivos: No afectan a Spring Boot 1.x
-->
<suppress>
<notes>
<![CDATA[
file name: spring-boot-starter-aop-1.5.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.boot:spring-boot-starter-aop:.*$</gav>
<cve>CVE-2011-2730</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-boot-starter-web-1.5.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.boot:spring-boot-starter-web:.*$</gav>
<cve>CVE-2011-2730</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-boot-1.5.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.boot:spring-boot:.*$</gav>
<cve>CVE-2011-2730</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-boot-starter-1.5.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.boot:spring-boot-starter:.*$</gav>
<cve>CVE-2011-2730</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-boot-starter-jdbc-1.5.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.boot:spring-boot-starter-jdbc:.*$</gav>
<cve>CVE-2011-2730</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-data-jpa-1.11.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.data:spring-data-jpa:.*$</gav>
<cve>CVE-2011-2730</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-data-commons-1.13.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.data:spring-data-commons:.*$</gav>
<cve>CVE-2011-2730</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-boot-starter-security-1.5.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.boot:spring-boot-starter-security:.*$</gav>
<cve>CVE-2011-2730</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-boot-autoconfigure-1.5.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.boot:spring-boot-autoconfigure:.*$</gav>
<cve>CVE-2011-2730</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-boot-1.5.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.boot:spring-boot:.*$</gav>
<cve>CVE-2011-2730</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-data-jpa-1.11.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.data:spring-data-jpa:.*$</gav>
<cve>CVE-2011-2730</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-data-commons-1.13.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.data:spring-data-commons:.*$</gav>
<cve>CVE-2011-2730</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-boot-starter-security-1.5.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.boot:spring-boot-starter-security:.*$</gav>
<cve>CVE-2011-2730</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-boot-starter-logging-1.5.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.boot:spring-boot-starter-logging:.*$</gav>
<cve>CVE-2011-2730</cve>
</suppress>
<suppress>
<notes>
<![CDATA[
file name: spring-boot-starter-data-jpa-1.5.20.RELEASE.jar
]]>
</notes>
<gav regex="true">^org\.springframework\.boot:spring-boot-starter-data-jpa:.*$</gav>
<cve>CVE-2011-2730</cve>
</suppress>
<!-- END CVE-2011-2730
Falsos positivos: No afectan a Spring Boot 1.x
***************************************** -->
<suppress>
<notes><![CDATA[
file name: tomcat-embed-core-8.5.39.jar
Sólo afecta a Windows https://nvd.nist.gov/vuln/detail/CVE-2019-0232
]]></notes>
<gav regex="true">^org\.apache\.tomcat\.embed:tomcat-embed-core:.*$</gav>
<cve>CVE-2019-0232</cve>
</suppress>
<suppress>
<notes><![CDATA[
file name: tomcat-embed-websocket-8.5.39.jar
Sólo afecta a Windows https://nvd.nist.gov/vuln/detail/CVE-2019-0232
]]></notes>
<gav regex="true">^org\.apache\.tomcat\.embed:tomcat-embed-websocket:.*$</gav>
<cve>CVE-2019-0232</cve>
</suppress>
</suppressions>
Loading

0 comments on commit 3236ae6

Please sign in to comment.