Sécurisation des ressources JAX-RS en aval

Les ressources en aval JAX-RS (Java™ API for RESTful Web Services) peuvent être sécurisées par la configuration de la méthode d'authentification BasicAuth et l'utilisation du gestionnaire de sécurité LTPA JAX-RS afin de profiter de la connexion unique pour l'authentification utilisateur.

Avant de commencer

Cette tâche suppose que vous avez déjà effectué les procédures suivantes :
  • Vous avez défini pour votre serveur d'applications un profil de cellule fédéré dans la cellule du gestionnaire de déploiement.
  • Vous avez installé votre application JAX-RS sur le serveur d'applications.
  • Vous avez activé la sécurité pour votre application JAX-RS.
  • Vous avez sécurisé vos applications JAX-RS dans le conteneur Web en configurant les applications JAX-RS en aval pour utiliser la méthode d'authentification de base (BasicAuth) pour authentifier les utilisateurs.

Pourquoi et quand exécuter cette tâche

Lors de la composition des ressources JAX-RS, un nouveau gestionnaire de sécurité LTPA JAX-RS peut être utilisé pour s'authentifier de manière transparente dans les appels de ressources en aval.

Lors de l'appel des ressources JAX-RS sécurisées en aval, l'application appelante doit s'authentifier auprès de la ressource cible. Si la ressource cible sur un serveur en aval met en oeuvre sa sécurité à l'aide de la méthode BasicAuth, l'application appelante peut profiter de la connexion unique (SSO) pour les ressources JAX-RS. Avec la connexion unique, un contexte authentifié est propagé dans les appels en aval. Vous pouvez utiliser le gestionnaire de sécurité client LTPA pour l'authentification auprès des ressources en aval réparties sur les serveurs d'un environnement de cellule.

Pour illustrer ce scénario, supposons que la cellule contienne deux serveurs, et que les ressources JAX-RS soient déployées sur ces serveurs. Supposons qu'une ressource de serveur1 doive appeler une autre ressource déployée sur serveur2. Lorsque les ressources de serveur2 sont sécurisées à l'aide de la méthode d'authentification BasicAuth, utilisez le gestionnaire de sécurité LTPA JAX-RS pour tirer partie de la connexion unique et propager de façon transparente l'authentification utilisateur dans les appels en aval, sans avoir à fournir ou gérer des identificateurs et des mots de passe utilisateur dans l'application.

Figure 1. Sécurisation des ressources JAX-RS en avalLes ressources en aval peuvent être sécurisées par la configuration de la méthode d'authentification BasicAuth et l'utilisation du gestionnaire de sécurité LTPA JAX-RS.

Procédez comme suit pour configurer l'authentification utilisateur auprès d'un serveur en aval à l'aide du gestionnaire de sécurité JAX-RS lors de la génération de l'application.

Procédure

  1. Lors de la génération de l'application, utilisez le gestionnaire client de sécurité LTPA, LtpaAuthSecurityHandler, pour authentifier les ressources en aval réparties sur les serveurs de l'environnement de la cellule.
    • Pour JAX-RS 1.1, lors de l'utilisation de la classe LtpaAuthSecurityHandler, vérifiez que vos ressources cible utilisent le même schéma https pour vos URL et que l'application cible est activée pour SSL. Il est vivement recommandé d'utiliser des connexions SSL lors de l'envoi des informations d'identification, notamment des cookies LTPA. Vous pouvez désactiver explicitement l'utilisation de SSL dans la classe LtpaAuthSecurityHandler en appelant la méthode setSSLRequired dans le gestionnaire de sécurité avec la valeur false. La valeur par défaut est true.
      yourLtpaAuthSecHandler.setSSLRequired(false);
    • Pour JAX-RS 2.0, vous pouvez utiliser la propriété client com.ibm.ws.jaxrs.client.ltpa.handler pour définir un cookie de connexion unique et affecter la valeur 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. Ajoutez le gestionnaire de sécurité à la chaîne des gestionnaires.
  3. Créez l'instance de client REST.
  4. Créez l'instance de la ressource avec laquelle vous voulez interagir.
  5. Remplacez une valeur représentant l'adresse source.

Résultats

Vous avez défini des ressources JAX-RS sécurisées dans l'environnement de cellule, de sorte que lorsque les ressources en aval sont appelées, la connexion unique peut être utilisée et l'authentification utilisateur propagée de façon transparente dans les appels en aval, sans avoir à fournir ou gérer des identificateurs et des mots de passe utilisateur dans l'application.

Exemple

Pour JAX-RS 1.1, le fragment de code suivant illustre l'utilisation de ce gestionnaire de sécurité fourni avec le client 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.
Pour JAX-RS 2.0, le fragment de code suivant illustre l'utilisation de ce gestionnaire de sécurité fourni avec le client 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;

Icône indiquant le type de rubrique Rubrique de tâche



Icône d'horodatage Dernière mise à jour: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxrs_impl_securejaxrs_downstreamresource
Nom du fichier : twbs_jaxrs_impl_securejaxrs_downstreamresource.html