Protección de recursos JAX-RS en sentido descendente

Puede proteger los recursos JAX-RS (Java™ API for RESTful Web Services) en sentido descendente configurando el método BasicAuth para autenticación y utilizando el manejador de seguridad LTPA de JAX-RS para sacar partido del inicio de sesión único para la autenticación de usuarios.

Antes de empezar

En esta tarea se presupone que ha llevado a cabo los pasos siguientes:
  • Ha instalado su aplicación de JAX-RS en el servidor de aplicaciones.
  • Ha habilitado la seguridad para la aplicación JAX-RS.
  • Ha protegido las aplicaciones JAX-RS dentro del contenedor web configurando aplicaciones JAX-RS en sentido descendente para utilizar el método de autenticación básica (BasicAuth) para la autenticación de usuarios.

Acerca de esta tarea

Al componer recursos JAX-RS, se puede utilizar un nuevo manejador de seguridad JAX-RS de LTPA para realizar la autenticación sin problemas en las invocaciones de recursos en sentido descendente.

Cuando se invocan recursos JAX-RS de protección en sentido descendente, es necesaria la aplicación que llama para autenticar al recurso de destino. Si el recurso de destino en un servidor en sentido descendente utiliza el método BasicAuth para la seguridad, la aplicación que llama puede aprovechar las ventajas de inicio de sesión único (SSO) para los recursos JAX-RS. Si se utiliza el inicio de sesión único, un contexto autenticado se propaga a lo largo de las llamadas en sentido descendente. Puede utilizar el manejador de cliente de seguridad basado en LTPA para autenticarse en los recursos en sentido descendente que se distribuyen entre servidores.

Para ilustrar este caso práctico, supongamos que tiene dos servidores en la célula y que ha desplegado recursos JAX-RS en ambos de estos servidores. Suponga que de un recurso en server1 necesita invocar a otro recurso que esté desplegado en server2. Cuando los recursos de server2 estén protegidos con el método BasicAuth para autenticación, utilice el manejador de seguridad JAX-RS LTPA para sacar partido del inicio de sesión único y propagar sin interrupciones la autenticación de usuarios en llamadas en sentido descendente sin tener que proporcionar o gestionar identidades de usuario y contraseñas en la aplicación.

Figura 1. Protección de recursos en sentido descendente JAX-RSPuede proteger los recursos en sentido descendente configurando el método BasicAuth para la autenticación y utilizando el manejador de seguridad JAX-RS de LTPA.

Siga estos pasos para configurar la autenticación de usuarios en un servidor en sentido descendente mediante el manejador de seguridad JAX-RS durante la compilación de la aplicación.

Procedimiento

  1. En tiempo de compilación de la aplicación, utilice el manejador de cliente de seguridad basado en LTPA, LtpaAuthSecurityHandler, para autenticarse en recursos en sentido descendente que se distribuyen entre servidores.
    • Para JAX-RS 1.1, al utilizar la clase LtpaAuthSecurityHandler, asegúrese de direccionar los recursos utilizando el esquema https para los URL y de que la aplicación de destino está habilitada para SSL. Se recomienda encarecidamente utilizar conexiones SSL al enviar las credenciales del usuario, incluidas las cookies LTPA. Explícitamente puede desactivar el requisito para SSL en la clase LtpaAuthSecurityHandler invocando el método setSSLRequired en el manejador de seguridad con el valor false. El valor predeterminado es true.
      yourLtpaAuthSecHandler.setSSLRequired(false);
    • Para JAX-RS 2.0, puede utilizar la propiedad de cliente com.ibm.ws.jaxrs.client.ltpa.handler para establecer la cookie de SSO y establecer en valor en true:
      ClientBuilder cb = ClientBuilder.newBuilder();
      
              Client c = cb.build();
              c.property("com.ibm.ws.jaxrs.client.ltpa.handler", "true");
              WebTarget t = c.target("http://" + serverIP + ":" + serverPort + "/" + moduleName + "/ComplexClientTest/ComplexResource");
              String res = t.path("echo1").path("test1").request().get(String.class);
              c.close();
              ret.append(res);
    Si desea utilizar la función de capa de sockets seguros (SSL) en JAX-RS 2.0, debe habilitar la característica ssl-1.0 o appSecurity-2.0. Para la función de señal LTPA, es necesaria la característica appSecurity-2.0.
    Nota: la característica ssl-1.0 es una subcaracterística de la característica appSecurity-2.0. Si habilita la característica jaxrsClient-2.0 y la característica ssl-1.0, la característica appSecurity-2.0 se habilita automáticamente.
  2. Añada el manejador de seguridad a la cadena de manejadores.
  3. Cree la instancia de cliente REST.
  4. Cree la instancia de recurso con la que desee interactuar.
  5. Sustituya un valor que represente la dirección de recursos.

Resultados

Ha definido recursos JAX-RS seguros de manera que, cuando se invoquen recursos en sentido descendente, pueda utilizar el inicio de sesión único y propagar sin interrupciones la autenticación en llamadas en sentido descendente sin tener que proporcionar ni gestionar identidades de usuario y contraseñas en la aplicación.

Ejemplo

Para JAX-RS 1.1, el fragmento de código siguiente muestra cómo utilizar este manejador de seguridad que está empaquetado como parte del cliente JAX-RS.
import org.apache.wink.client.Resource;
 import org.apache.wink.client.RestClient;
 import org.apache.wink.client.ClientConfig;
 import org.apache.wink.client.handlers.LtpaAuthSecurityHandler;

 ClientConfig config = new ClientConfig();
 LtpaAuthSecurityHandler secHandler = new LtpaAuthSecurityHandler();
 
 // Añadir este manejador de seguridad a la cadena de manejadores.
 config.handlers(secHandler);

 // Crear la instancia de cliente REST.
 RestClient client = new RestClient(config);

 // Crear la instancia de recurso con la que desea interactuar.
 // Sustituir un valor que represente la dirección del recurso
 resource =  
  client.resource("http://localhost:8080/path/to/resource");

// Ahora está preparado para empezar a llamar al recurso.
Para JAX-RS 2.0, el fragmento de código siguiente muestra cómo utilizar este manejador de seguridad que está empaquetado como parte del cliente JAX-RS.
ClientBuilder cb = ClientBuilder.newBuilder();
Client c = cb.build();
c.property("com.ibm.ws.jaxrs.client.ltpa.handler", "true");

String res = "";
res = c.target("http://" + serverIP + ":" + serverPort + "/" + moduleName + "/rest/ltpa")
                            .request()
c.close();
return res;

Icono que indica el tipo de tema Tema de tarea

Términos y condiciones para centros de información | Comentarios


Icono de indicación de fecha y hora Última actualización: Tuesday, 7 June 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twbs_jaxrs_impl_securejaxrs_downstreamresource
Nombre de archivo:twbs_jaxrs_impl_securejaxrs_downstreamresource.html