Seguridad en servicios REST con JAX-RS

Se sostiene en tres pilares:
1. Autenticación, consiste en verificar e identificar
2. Encriptación
3. Validación

Autenticación por usuario/clave

1. JAX-RS SecurityContext: esta interfaz brinda acceso a la información sobre la seguridad del servicio REST
1.1. getAuthenticationScheme(): retorna el nombre del esquema de seguridad utilizado (BASIC, FORM, CLIENT_CERT)
1.2. getUserPrincipal(): retorna un objeto de tipo “Principal” que contiene el nombre de usuario
1.3. isUserInRole(): retorna verdadero o falso según corresponda con el rol del usuario
2. Consideraciones
2.1. El esquema usuario/clave es adecuado para autenticar un servicio en una aplicación especifica
2.2. Cuando otras aplicaciones web, móvil, etc. deben acceder al servicio, no se puede proporcionar un usuario/clave para estas aplicaciones externas

Autenticación por OAuth

1. Es un método de autenticación basado en token
2. Roles
2.1. Cliente, el programa que utiliza el servicio web
2.2. Usuario, la persona que quiere hacer uso del servicio
2.3. Servidor, el servicio web
3. El flujo del proceso es:
3.1. El usuario presiona el botón “Entrar”
3.2. El cliente envía la señal al proceso de OAuth
3.3. El cliente envía las credenciales hacia OAuth
3.4. OAuth envía las credenciales al servicio
3.5. Finalmente el cliente accede al servicio
4. Es útil para acceder a los servicios cuando:
4.1. Desde otra aplicación externa
4.2. Aplicaciones móviles
4.3. Aplicaciones nativas
5. No tiene sentido cuando el servicio a consumir y el cliente pertenecen a la misma aplicación o cuando la interacción será entre servicios
6. Beneficios
6.1. No hay intercambio de la clave entre aplicaciones
6.2. No se almacena la clave en el cliente
6.3. Se reducen los impactos de seguridad cuando
6.3.1. El cliente sufre un ataque
6.3.2. El servicio sufre un ataque
7. OAuth 2.0
7.1. Tipos de token
7.1.1. Bearer
7.1.2. Mac

Encriptación

¿Cómo habilitar SSL mediante web.xml?

201610162318_1

1. JAX-RS SecurityContext
1.1. isSecure(): retorna verdadero si la comunicación solicitud/respuesta es mediante HTTPS
2. Gestión segura de COOKIES
2.1. Asegura el envío de COOKIES vía SSL
2.2. En la especificación Servlet 3.0 se puede configurar vía web.xml

201610162318_2

2.3. Por código

201610162318_3

Validación

1. Restricciones de las entradas
1.1. Solo POST
1.2. Restringir el tipo de contenido
1.3. Solo usar AJAX
1.4. Limitar el tipo de respuestas

En resumen

1. Autenticación
1.1. Utilizar usuario/clave en los servicios consumidos por la aplicación propia
1.2. Usar OAuth para exponer servicios a terceros
2. Encriptación
2.1. Usar SSL
2.2. Usar secure flag
2.3. Usar encabezados de tipo STS
3. Validación
3.1. Restringir las entradas
3.2. Usar protección contra ataques CSRF

Etiquetas:

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


A %d blogueros les gusta esto: