Seguridad para aplicaciones
Web Java con JSON Web Tokens
(JWT)
Eudris Cabrera
@eudriscabrera
Eudris Cabrera
Graduado de Ingeniería Telemática en la PUCMM. Entusiasta
de la tecnología y el software libre, desarrollador Java,
instructor ocasional (Java / Linux), aficionado del
béisbol/sóftbol y los bailes latinos.
En el tiempo libre, escribe artículos, realiza charlas, participa
en eventos tecnológicos y ayuda en la revisión de
documentación técnica en el mundo Java y el código abierto.
REPUBLICA
DOMINICANA
¿De dónde soy?
https://jconfdominicana.orgTwitter:
@JavaDominicano
5
JConf
Dominicana
2019
6
JConf
Dominicana
2019
AGENDA
● Conceptos Fundamentales
● Mecanismo de Autenticación
● Mecanismo de Autenticación en
Java
● Desafíos que enfrentamos al
momento de aplicar un mecanismo
de seguridad.
● Plataforma de Manejo de Identidad
Al desarrollar una aplicación, la seguridad es un punto muy
importante.
Cualquier código o aplicación que se ejecute en una red es
vulnerable a los riesgos y puede amenazar los problemas de
privacidad, seguridad e integridad.
Conceptos Fundamentales
Autenticación
Autenticación es la primera linea de defensa. La aplicación debe determinar si el usuario es quién
dice ser o si la entidad, un servidor o programa, es lo que dice ser.
La forma más común de autenticación es la de id usuario y contraseña.
Las políticas de autenticación, los procesos y el registro deben ser diseñado, desarrollado y
documentado para garantizar que la aplicación evite que usuarios no autorizados acceden al sitio.
Autorización y Control de Acceso
La autenticación le dice a un usuario "Te reconozco como usuario". La autorización dice: "Ahora
que sé quién eres, también sé lo que tienes permitido hacer; qué datos tienes permitido ver y
modificar".
El control de acceso determina desde dónde se puede conectar un usuario; a qué hora pueden
conectarse y el tipo de cifrado requerido.
El objetivo es desarrollar una seguridad estrategia para proteger los datos y sistemas de back-end y
front-end. Esto se puede lograr mediante el uso de roles, credenciales y etiquetas de sensibilidad.
Autorización y Control de Acceso
Documente los roles de los usuarios durante el desarrollo y determine quién tendrá la
responsabilidad de asignar roles específicos a los usuarios
Control de Acceso Basado en Roles
El acceso basado en roles se refiere a los permisos de acceso que se pueden asignar a un usuario o
grupo de usuarios en una aplicación.
Estos pueden ser, agregar nuevo, editar, modificar y borrar un registro. Poder acceder un
formulario, entre otros.
El uso de roles nos permite:
1. Proporcionar acceso exclusivo a usuarios específicos.
2. Agregar, cambiar o retirar fácilmente los permisos de acceso a usuarios.
3. Reduce la posibilidad de cometer errores al asignar permisos a un usuario.
Single sign-on(Autenticación única)
Single sign-on se refiere a la capacidad de que los usuarios se autentiquen una sola vez al inicio de
una sesión y posteriormente puedan utilizar varias aplicaciones sin necesidad de estarse
autenticando para cada una.
Mecanismo de Autenticación
1. Autenticación básica
2. Autenticación basada en formulario
3. Autenticación Digest
4. Autenticación basada en Token
5. Otras
La autenticación básica y la autenticación basada en formularios no son mecanismos de
autenticación muy seguros.
La autenticación básica envía usuario y contraseña a través de Internet como texto codificado en
Base64.
La autenticación basada en formularios envía estos datos como texto plano(plain text).
Estas formas de autenticación dejan los datos del usuario expuestos y vulnerables. Si alguien puede
interceptar la transmisión, el nombre de usuario y la información de contraseña se pueden
decodificar fácilmente.
Sin embargo, cuando se utiliza un mecanismo de transporte seguro, como SSL, o seguridad a nivel
de red, como el protocolo IPsec o una VPN, junto con la autenticación básica o basada en
formularios, algunas de estas preocupaciones pueden aliviarse.
Autenticación básica(Basic authentication)
Autenticación basada en formulario
Autenticación Digest
Al igual que la autenticación básica, la autenticación Digest autentica a un usuario en función de un
nombre de usuario y una contraseña.
Sin embargo, a diferencia de la autenticación básica, la autenticación de Digest no envía contraseñas
de usuario a través de la red.
En cambio, el cliente envía un hash criptográfico unidireccional de la contraseña y datos adicionales.
Aunque las contraseñas no se envían, requiere que el equivalente de contraseña de texto plano esté
disponible para que el contenedor de autenticación pueda validar los autenticadores recibidos
calculando el digest esperado.
Los métodos anteriores de autenticación nos obligan a tener que enfrentarnos a una serie de
desafios tales como : manejo de sesiones, escalabilidad, cross-origin resource sharing (CORS) y
cross-site request forgery (CSRF).
Con estos problemas, siendo la escalabilidad el principal ya que las sesiones están almacenada en
memoria, fue necesario probar un nuevo enfoque diferente, la autenticación basada en Token.
Autenticación basada en Token
La autenticación basada en tokens es una técnica de seguridad que autentica a los usuarios que
intentan iniciar sesión en un servidor, una red u otro sistema seguro, utilizando un token de
seguridad proporcionado por el servidor.
Una autenticación es exitosa si un usuario puede demostrar a un servidor que él o ella es un usuario
válido al pasar un token de seguridad.
El servicio valida el token de seguridad y procesa la solicitud del usuario.
Autenticación basada en Token
Una vez que el token es validado por el servicio, se utiliza para establecer el contexto de seguridad
para el cliente, de modo que el servicio pueda tomar decisiones de autorización o auditar la
actividad para las sucesivas solicitudes de los usuarios.
Autenticación basada en Token
La autenticación basada en tokens es importante en todas partes en la web hoy en día. Con la
mayoría de las compañías web que usan una API, los tokens son la mejor manera de manejar la
autenticación para múltiples usuarios.
Como los tokens son almacenados en el lado del cliente, no hay información de estado y la
aplicación se vuelve totalmente escalable.
Podemos usar el mismo API para diferentes apliaciones (Web, Mobile, Android, iOS, ...) solo debemos
preocuparnos de enviar los datos en formato JSON y generar y descrifrar tokens en la autenticación
y posteriores peticiones HTTP a través de un middleware.
Autenticación basada en Token
También nos añade más seguridad. Al no utilizar cookies para almacenar la información del usuario,
podemos evitar ataques CSRF (Cross-Site Request Forgery) que manipulen la sesión que se envía al
backend.
Por supuesto podemos hacer que el token expire después de un tiempo lo que le añade una capa
extra de seguridad.
¿Quién usa la autenticación basada en tokens?
Cualquier API o aplicación web importante que haya encontrado probablemente haya usado tokens.
Las aplicaciones como Facebook, Twitter, Google+, GitHub y muchas más usan tokens.
JSON Web Tokens
JSON Web Token, comúnmente conocidos como JWT, es un estándar abierto (RFC 7519) que define
un modo compacto y autónomo para transmitir de forma segura la información entre las partes
como un objeto JSON.
JWT define un formato estandar para autenticación y autorización de los usuarios en las
aplicaciones.
Su utilización ha ganado popularidad en los últimos años porque permite que los servidores acepten
solicitudes simplemente validando el contenido de estos JWTS.
JSON Web Tokens
Es decir, las aplicaciones que usan JWTS ya no tienen que contener cookies u otros datos de sesión
sobre sus usuarios.
Esta característica facilita la escalabilidad mientras mantiene las aplicaciones seguras.
JSON Web Tokens
● Autenticación y autorización basada en Token
● Compactible con OpenId
● JWT -> RFC 7519 (Estandar abierto)
JSON Web Token
El formato de un JWT está compuesto por 3 strings separados por un punto . algo así como:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaW
F0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Cada string significa una cosa: Header, Payload y Signature.
JSON Web Token
Header
La primera parte es la cabecera del token, que a su vez tiene otras dos partes, el tipo, en este caso
un JWT y la codificación utilizada.
Comunmente es el algoritmo HMAC SHA256, El contenido sin codificar es el siguiente:
{
"typ": "JWT",
"alg": "HS256
}
Codificado sería: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
JSON Web Token
Payload
El Payload está compuesto por los llamados JWT Claims donde irán colocados la atributos que
definen nuestro token. Exiten varios que puedes consultar aquí, los más comunes a utilizar son:
{
"sub": "54a8ce618e91b0b13665e2f9",
"iat": "1424180484",
"exp": "1425390142"
}
JSON Web Token
Payload
sub: Identifica el sujeto del token, por ejemplo un identificador de usuario.
iat: Identifica la fecha de creación del token, válido para si queremos ponerle una fecha de
caducidad. En formato de tiempo UNIX.
exp: Identifica a la fecha de expiración del token. Podemos calcularla a partir del iat. También en
formato de tiempo UNIX.
JSON Web Token
También podemos añadirle más campos, incluso personalizados, como pueden ser el rol del
usuario, etc.
{
"sub": "54a8ce618e91b0b13665e2f9",
"iat": "1424180484",
"exp": "1425390142",
"admin": true,
"role": 1
}
Codificado sería:
eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
JSON Web Token
Signature
La firma es la tercera y última parte del JSON Web Token. Está formada por los anteriores
componentes (Header y Payload) cifrados en Base64 con una clave secreta (almacenada en nuestro
backend). Así sirve de Hash para comprobar que todo está bien.
HMACSHA256(
base64UrlEncode(header) + "." +
base64UrlEncode(payload), secret
);
Codificado sería: SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
JSON Web Token
Signature
Por tanto, todo nuestro JSON Web Token, una vez codificado tendrá esta formato:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZS
I6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf
36POk6yJV_adQssw5c
Si lo comprobamos en la web JWT.io vemos que lo traduce a los campos que hemos visto.
Mecanismo de Autenticación en Java
En la mayoría de contendores web Java y servidores de aplicaciones podemos encontrar los
siguientes mecanismo de autenticación.
Servlet Java EE Security (Java EE 8 / Jakarta EE)
BASIC BASIC
FORM FORM
DIGEST Custom FORM
MicroProfile
JWT (Disponible en Payara Server / Payara Micro, RedHat Thorntail v2 & Quarkus, Open Liberty,
Kumuluzee, Oracle Helidon, entre otros )
Validación de un JWT en Java (JJWT)
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
byte[] key = getSignatureKey();
String jwt = Jwts.builder().setIssuer("http://trustyapp.com/")
.setSubject("users/1300819380")
.setExpiration(expirationDate)
.put("scope", "self api/buy")
.signWith(SignatureAlgorithm.HS256,key)
.compact();
Desafíos que enfrentamos al momento de
aplicar un mecanismo de seguridad
Desafíos
Cómo puedo aplicar "correctamente":
¿Gestionar de forma segura las identidades de los usuarios?
¿Aplicar patrones de seguridad sin reinventar la rueda?
¿Asegurar mis aplicaciones web / servicios web / micro servicios con riesgos mínimos?
¿Reducir el impacto en el rendimiento en entornos de alta disponibilidad?
Plataforma de Manejo de Identidad al Rescate !!
Plataforma de Manejo de Identidad
● ¡Se te quitan los desafíos de seguridad!
● La gestión de la dentidad es la principal preocupación.
● Actualizaciones periódicas sobre vulnerabilidades conocidas.
● Cumple con el conjunto de estándares OpenID
Plataforma de Manejo de Identidad
Soluciones populares:
❖ Auth0
❖ Okta
❖ Keycloak
❖ Oracle Identity Management
❖ ForgeRock
https://github.com/ecabrerar/jwt-seguridad-web-conferencias.git
Código fuente de los ejemplos en GitHub
¿Preguntas?
¡Gracias
P o r
Acompañarnos!
Asuntos Legales
Todas las marcas registradas, así como todos los logotipos,
imágenes, fotografías, audio y vídeos mostrados en esta
presentación son propiedad de sus respectivos propietarios y/o
representantes.
Su utilización es solamente para fines ilustrativos.
Referencias
Enlaces:
https://dzone.com/articles/application-security-for-java-developers
https://docs.oracle.com/javaee/7/tutorial/security-webtier002.htm
https://www.sans.org/reading-room/whitepapers/securecode/paper/1389
https://blog.payara.fish/securing-a-rest-service
https://blog.payara.fish/java-ee-security-api-jsr-375/soteria-with-jwt-tokens
https://jwt.io
https://developers.redhat.com/blog/2019/12/11/keycloak-core-concepts-of-open-source-identity-and-access-management/?sc_cid
=701f2000000RtqCAAS
@eudriscabrera
@eudris
@ecabrerar
@eudriscabrera
Eudris Cabrera Rodríguez
Ingeniero Telemático
Desarrollador de Software / Consultor Informático
eudris@gmail.com
https://www.linkedin.com/in/eudriscabrera
http://www.slideshare.net/eudris
https://twitter.com/eudriscabrera
https://github.com/ecabrerar

Seguridad para aplicaciones web java con json web tokens (jwt) 2020

  • 1.
    Seguridad para aplicaciones WebJava con JSON Web Tokens (JWT) Eudris Cabrera @eudriscabrera
  • 2.
    Eudris Cabrera Graduado deIngeniería Telemática en la PUCMM. Entusiasta de la tecnología y el software libre, desarrollador Java, instructor ocasional (Java / Linux), aficionado del béisbol/sóftbol y los bailes latinos. En el tiempo libre, escribe artículos, realiza charlas, participa en eventos tecnológicos y ayuda en la revisión de documentación técnica en el mundo Java y el código abierto.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
    AGENDA ● Conceptos Fundamentales ●Mecanismo de Autenticación ● Mecanismo de Autenticación en Java ● Desafíos que enfrentamos al momento de aplicar un mecanismo de seguridad. ● Plataforma de Manejo de Identidad
  • 8.
    Al desarrollar unaaplicación, la seguridad es un punto muy importante. Cualquier código o aplicación que se ejecute en una red es vulnerable a los riesgos y puede amenazar los problemas de privacidad, seguridad e integridad.
  • 9.
  • 10.
    Autenticación Autenticación es laprimera linea de defensa. La aplicación debe determinar si el usuario es quién dice ser o si la entidad, un servidor o programa, es lo que dice ser. La forma más común de autenticación es la de id usuario y contraseña. Las políticas de autenticación, los procesos y el registro deben ser diseñado, desarrollado y documentado para garantizar que la aplicación evite que usuarios no autorizados acceden al sitio.
  • 11.
    Autorización y Controlde Acceso La autenticación le dice a un usuario "Te reconozco como usuario". La autorización dice: "Ahora que sé quién eres, también sé lo que tienes permitido hacer; qué datos tienes permitido ver y modificar". El control de acceso determina desde dónde se puede conectar un usuario; a qué hora pueden conectarse y el tipo de cifrado requerido. El objetivo es desarrollar una seguridad estrategia para proteger los datos y sistemas de back-end y front-end. Esto se puede lograr mediante el uso de roles, credenciales y etiquetas de sensibilidad.
  • 12.
    Autorización y Controlde Acceso Documente los roles de los usuarios durante el desarrollo y determine quién tendrá la responsabilidad de asignar roles específicos a los usuarios
  • 13.
    Control de AccesoBasado en Roles El acceso basado en roles se refiere a los permisos de acceso que se pueden asignar a un usuario o grupo de usuarios en una aplicación. Estos pueden ser, agregar nuevo, editar, modificar y borrar un registro. Poder acceder un formulario, entre otros. El uso de roles nos permite: 1. Proporcionar acceso exclusivo a usuarios específicos. 2. Agregar, cambiar o retirar fácilmente los permisos de acceso a usuarios. 3. Reduce la posibilidad de cometer errores al asignar permisos a un usuario.
  • 14.
    Single sign-on(Autenticación única) Singlesign-on se refiere a la capacidad de que los usuarios se autentiquen una sola vez al inicio de una sesión y posteriormente puedan utilizar varias aplicaciones sin necesidad de estarse autenticando para cada una.
  • 15.
  • 16.
    1. Autenticación básica 2.Autenticación basada en formulario 3. Autenticación Digest 4. Autenticación basada en Token 5. Otras
  • 17.
    La autenticación básicay la autenticación basada en formularios no son mecanismos de autenticación muy seguros. La autenticación básica envía usuario y contraseña a través de Internet como texto codificado en Base64. La autenticación basada en formularios envía estos datos como texto plano(plain text).
  • 18.
    Estas formas deautenticación dejan los datos del usuario expuestos y vulnerables. Si alguien puede interceptar la transmisión, el nombre de usuario y la información de contraseña se pueden decodificar fácilmente. Sin embargo, cuando se utiliza un mecanismo de transporte seguro, como SSL, o seguridad a nivel de red, como el protocolo IPsec o una VPN, junto con la autenticación básica o basada en formularios, algunas de estas preocupaciones pueden aliviarse.
  • 19.
  • 20.
    Autenticación Digest Al igualque la autenticación básica, la autenticación Digest autentica a un usuario en función de un nombre de usuario y una contraseña. Sin embargo, a diferencia de la autenticación básica, la autenticación de Digest no envía contraseñas de usuario a través de la red. En cambio, el cliente envía un hash criptográfico unidireccional de la contraseña y datos adicionales. Aunque las contraseñas no se envían, requiere que el equivalente de contraseña de texto plano esté disponible para que el contenedor de autenticación pueda validar los autenticadores recibidos calculando el digest esperado.
  • 21.
    Los métodos anterioresde autenticación nos obligan a tener que enfrentarnos a una serie de desafios tales como : manejo de sesiones, escalabilidad, cross-origin resource sharing (CORS) y cross-site request forgery (CSRF). Con estos problemas, siendo la escalabilidad el principal ya que las sesiones están almacenada en memoria, fue necesario probar un nuevo enfoque diferente, la autenticación basada en Token.
  • 22.
    Autenticación basada enToken La autenticación basada en tokens es una técnica de seguridad que autentica a los usuarios que intentan iniciar sesión en un servidor, una red u otro sistema seguro, utilizando un token de seguridad proporcionado por el servidor. Una autenticación es exitosa si un usuario puede demostrar a un servidor que él o ella es un usuario válido al pasar un token de seguridad. El servicio valida el token de seguridad y procesa la solicitud del usuario.
  • 23.
    Autenticación basada enToken Una vez que el token es validado por el servicio, se utiliza para establecer el contexto de seguridad para el cliente, de modo que el servicio pueda tomar decisiones de autorización o auditar la actividad para las sucesivas solicitudes de los usuarios.
  • 25.
    Autenticación basada enToken La autenticación basada en tokens es importante en todas partes en la web hoy en día. Con la mayoría de las compañías web que usan una API, los tokens son la mejor manera de manejar la autenticación para múltiples usuarios. Como los tokens son almacenados en el lado del cliente, no hay información de estado y la aplicación se vuelve totalmente escalable. Podemos usar el mismo API para diferentes apliaciones (Web, Mobile, Android, iOS, ...) solo debemos preocuparnos de enviar los datos en formato JSON y generar y descrifrar tokens en la autenticación y posteriores peticiones HTTP a través de un middleware.
  • 26.
    Autenticación basada enToken También nos añade más seguridad. Al no utilizar cookies para almacenar la información del usuario, podemos evitar ataques CSRF (Cross-Site Request Forgery) que manipulen la sesión que se envía al backend. Por supuesto podemos hacer que el token expire después de un tiempo lo que le añade una capa extra de seguridad.
  • 27.
    ¿Quién usa laautenticación basada en tokens? Cualquier API o aplicación web importante que haya encontrado probablemente haya usado tokens. Las aplicaciones como Facebook, Twitter, Google+, GitHub y muchas más usan tokens.
  • 28.
    JSON Web Tokens JSONWeb Token, comúnmente conocidos como JWT, es un estándar abierto (RFC 7519) que define un modo compacto y autónomo para transmitir de forma segura la información entre las partes como un objeto JSON. JWT define un formato estandar para autenticación y autorización de los usuarios en las aplicaciones. Su utilización ha ganado popularidad en los últimos años porque permite que los servidores acepten solicitudes simplemente validando el contenido de estos JWTS.
  • 29.
    JSON Web Tokens Esdecir, las aplicaciones que usan JWTS ya no tienen que contener cookies u otros datos de sesión sobre sus usuarios. Esta característica facilita la escalabilidad mientras mantiene las aplicaciones seguras.
  • 30.
    JSON Web Tokens ●Autenticación y autorización basada en Token ● Compactible con OpenId ● JWT -> RFC 7519 (Estandar abierto)
  • 31.
    JSON Web Token Elformato de un JWT está compuesto por 3 strings separados por un punto . algo así como: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaW F0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c Cada string significa una cosa: Header, Payload y Signature.
  • 32.
    JSON Web Token Header Laprimera parte es la cabecera del token, que a su vez tiene otras dos partes, el tipo, en este caso un JWT y la codificación utilizada. Comunmente es el algoritmo HMAC SHA256, El contenido sin codificar es el siguiente: { "typ": "JWT", "alg": "HS256 } Codificado sería: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
  • 33.
    JSON Web Token Payload ElPayload está compuesto por los llamados JWT Claims donde irán colocados la atributos que definen nuestro token. Exiten varios que puedes consultar aquí, los más comunes a utilizar son: { "sub": "54a8ce618e91b0b13665e2f9", "iat": "1424180484", "exp": "1425390142" }
  • 34.
    JSON Web Token Payload sub:Identifica el sujeto del token, por ejemplo un identificador de usuario. iat: Identifica la fecha de creación del token, válido para si queremos ponerle una fecha de caducidad. En formato de tiempo UNIX. exp: Identifica a la fecha de expiración del token. Podemos calcularla a partir del iat. También en formato de tiempo UNIX.
  • 35.
    JSON Web Token Tambiénpodemos añadirle más campos, incluso personalizados, como pueden ser el rol del usuario, etc. { "sub": "54a8ce618e91b0b13665e2f9", "iat": "1424180484", "exp": "1425390142", "admin": true, "role": 1 } Codificado sería: eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ
  • 36.
    JSON Web Token Signature Lafirma es la tercera y última parte del JSON Web Token. Está formada por los anteriores componentes (Header y Payload) cifrados en Base64 con una clave secreta (almacenada en nuestro backend). Así sirve de Hash para comprobar que todo está bien. HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret ); Codificado sería: SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
  • 37.
    JSON Web Token Signature Portanto, todo nuestro JSON Web Token, una vez codificado tendrá esta formato: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZS I6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf 36POk6yJV_adQssw5c Si lo comprobamos en la web JWT.io vemos que lo traduce a los campos que hemos visto.
  • 38.
    Mecanismo de Autenticaciónen Java En la mayoría de contendores web Java y servidores de aplicaciones podemos encontrar los siguientes mecanismo de autenticación. Servlet Java EE Security (Java EE 8 / Jakarta EE) BASIC BASIC FORM FORM DIGEST Custom FORM MicroProfile JWT (Disponible en Payara Server / Payara Micro, RedHat Thorntail v2 & Quarkus, Open Liberty, Kumuluzee, Oracle Helidon, entre otros )
  • 39.
    Validación de unJWT en Java (JJWT) import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; byte[] key = getSignatureKey(); String jwt = Jwts.builder().setIssuer("http://trustyapp.com/") .setSubject("users/1300819380") .setExpiration(expirationDate) .put("scope", "self api/buy") .signWith(SignatureAlgorithm.HS256,key) .compact();
  • 40.
    Desafíos que enfrentamosal momento de aplicar un mecanismo de seguridad
  • 41.
    Desafíos Cómo puedo aplicar"correctamente": ¿Gestionar de forma segura las identidades de los usuarios? ¿Aplicar patrones de seguridad sin reinventar la rueda? ¿Asegurar mis aplicaciones web / servicios web / micro servicios con riesgos mínimos? ¿Reducir el impacto en el rendimiento en entornos de alta disponibilidad? Plataforma de Manejo de Identidad al Rescate !!
  • 42.
    Plataforma de Manejode Identidad ● ¡Se te quitan los desafíos de seguridad! ● La gestión de la dentidad es la principal preocupación. ● Actualizaciones periódicas sobre vulnerabilidades conocidas. ● Cumple con el conjunto de estándares OpenID
  • 43.
    Plataforma de Manejode Identidad Soluciones populares: ❖ Auth0 ❖ Okta ❖ Keycloak ❖ Oracle Identity Management ❖ ForgeRock
  • 44.
  • 45.
  • 46.
  • 47.
    Asuntos Legales Todas lasmarcas registradas, así como todos los logotipos, imágenes, fotografías, audio y vídeos mostrados en esta presentación son propiedad de sus respectivos propietarios y/o representantes. Su utilización es solamente para fines ilustrativos.
  • 48.
  • 49.
    @eudriscabrera @eudris @ecabrerar @eudriscabrera Eudris Cabrera Rodríguez IngenieroTelemático Desarrollador de Software / Consultor Informático eudris@gmail.com https://www.linkedin.com/in/eudriscabrera http://www.slideshare.net/eudris https://twitter.com/eudriscabrera https://github.com/ecabrerar