Modelos de autorización de la seguridad de servicios web

Las aplicaciones de proveedor que se implementan como servlets o Enterprise JavaBeans (EJB) pueden utilizar servicios web y se pueden proteger mediante la seguridad de servicios web. La autorización basada en roles de Java Platform, Enterprise Edition (Java EE) se puede utilizar para controlar el acceso a aplicaciones de proveedor del servicio web que se implementan como servlets o EJB. Aunque los roles de seguridad de las implementaciones de servlet y EJB se configuran de la misma forma, el acceso a los servicios difiere por implementación.

Para un proveedor que se implementa como servlet, el contenedor web realiza la autorización basada en roles mediante la autenticación básica HTTP.
  1. Se pasa una señal de seguridad a la cabecera HTTP de la solicitud SOAP.
  2. El contenedor web autentica la señal de seguridad y luego realiza la autorización basada en roles del usuario.
  3. Después de una autorización de usuario satisfactoria, el contenedor web llama al motor de servicios web con el mensaje de entrada.

La figura siguiente ilustra dónde se produce cada paso del proceso de autorización basada en roles para servlets.

Figura 1. Autorización de servlet en seguridad de servicio web. Esta figura muestra el proceso de autorización basada en roles para las implementaciones de servlet.
Autorización de servlet en seguridad de servicio web
Para un proveedor que se implementa como un EJB, el contenedor EJB realiza la autorización basada en roles.
  1. Se pasa una señal de seguridad para la identidad de usuario a la cabecera de seguridad de la solicitud SOAP.
  2. La seguridad de servicios Web autentica la señal.
  3. Con una configuración del interlocutor, la seguridad de servicios Web establece la identidad de la señal autenticada en la hebra actual.
  4. Cuando el motor de servicios web invoca el punto final, el contenedor EJB realiza la autorización basada en roles en la identidad de la hebra actual.

La figura siguiente ilustra dónde se produce cada paso del proceso de autorización basada en roles para EJB.

Figura 2. Autorización EJB en seguridad de servicio web. Esta figura muestra el proceso de autorización basada en roles para implementaciones EJB.
Autorización EJB en seguridad de servicio web

Cuando se implementa un proveedor de servicio web como un servlet, una señal que la seguridad de servicios Web pasa a la cabecera de seguridad de la solicitud SOAP no se puede utilizar para la autorización basada en roles para acceder al servicio.

Cuando se implementa un servicio web como un EJB, una señal que la seguridad de servicios Web pasa a la cabecera de seguridad de la solicitud SOAP solo se puede utilizar para la autorización basada en roles por parte del contenedor EJB para acceder al servicio si hay una configuración de interlocutor para dicha señal en las restricciones de seguridad de servicios Web activas.

Los proveedores de servicio web que se implementan como EJB también pueden utilizar el contenedor web para realizar la autorización basada en roles. Para ello, el servlet de direccionador que se muestra en la figura Autorización EJB en seguridad de servicio web está protegido con autenticación básica HTTP. Cuando esto se realiza, el proceso continúa tal como se muestra en la figura Autorización de servlet en la seguridad de servicio web.

Cuando hay una configuración de interlocutor en las restricciones de seguridad de servicios Web activas para una señal de entrada, dicha señal se establecerá como la identidad runAs en el contexto de seguridad de la hebra actual. La misma aplicación de proveedor protegida puede tomar decisiones de autorización basadas en dicha entidad. Esto se aplica tanto a servlets como a EJB.

Sugerencia: Aunque los consumidores de señales WS-Security no pueden realizar la autorización basada en roles para un servlet, puede crear un módulo de inicio de sesión personalizado que valide el usuario de entrada en grupos específicos del registro de usuarios. Para ver un ejemplo de cómo hacer esto para un UsernameToken, consulte el tema Sustitución del método de autenticación del consumidor de UsernameToken utilizando un módulo de inicio de sesión JAAS apilado.