Protección en sentido descendente de recursos JAX-RS

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

Esta tarea da por supuesto que ha completado los pasos siguientes:
  • Ha definido en el servidor de aplicaciones un perfil de célula federado en la célula del gestor de despliegue.
  • 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 con los recursos en sentido descendente que se distribuyen entre servidores de un entorno de célula.

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 server2 están protegidos utilizando el método BasicAuth para autenticación, utilice el manejador de seguridad JAX-RS de LTPA para aprovechar el inicio de sesión único y, de igual modo, propagar la autenticación de usuarios en las llamadas en sentido descendente sin tener que proporcionar o gestionar identidades y contraseñas de usuario en la aplicación.

Figura 1. Protección de recursos JAX-RS en sentido descendentePuede 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. Durante la compilación de la aplicación, utilice el manejador de cliente de seguridad basada en LTPA, LtpaAuthSecurityHandler, para autenticar en recursos en sentido descendente que se distribuyen en servidores de un entorno de célula.
    • Para JAX-RS 1.1, cuando se utiliza la clase LtpaAuthSecurityHandler, asegúrese de que los recursos de destino que utilizan el esquema https para los URL y que la aplicación de destino estén habilitados 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);
  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 en el entorno de célula 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 ofrece una demostración sobre cómo utilizar este manejador de seguridad que se empaqueta 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();
 
 // Add this security handler to the handlers chain.
 config.handlers(secHandler);

 // Create the REST client instance. 
 RestClient client = new RestClient(config);

 // Create the resource instance that you want to interact with. 
 // Substitute a value representing your resource address
 resource =  
  client.resource("http://localhost:8080/path/to/resource");

// Now you are ready to begin calling your resource.
Para JAX-RS 2.0, el fragmento de código siguiente ofrece una demostración sobre cómo utilizar este manejador de seguridad que se empaqueta 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;

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_impl_securejaxrs_downstreamresource
File name: twbs_jaxrs_impl_securejaxrs_downstreamresource.html