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 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.

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.
    • 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);
    • Référentiel Liberty[8.5.5.6 ou ultérieure]For JAX-RS 2.0, you can use the com.ibm.ws.jaxrs.client.ltpa.handler client property to set SSO cookie and set the value to 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);
    Référentiel Liberty[8.5.5.6 ou ultérieure]Si vous voulez utiliser la fonctionnalité Secure Sockets Layer (SSL) dans JAX-RS 2.0, vous devez activer la fonction ssl-1.0 ou appSecurity-2.0. Pour la fonction de jeton LTPA, la fonction appSecurity-2.0 est nécessaire.
    Remarque : La fonction ssl-1.0 est une sous-fonction de la fonction appSecurity-2.0. Si vous activez la fonction jaxrsClient-2.0 et la fonction ssl-1.0, la fonction appSecurity-2.0 est activée automatiquement.
  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 , 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.
Référentiel Liberty[8.5.5.6 ou ultérieure]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 Tâche

Dispositions pour les centres de documentation | Commentaires


Icône d'horodatage Dernière mise à jour: Wednesday, 2 September 2015
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=phil&product=was-libcore-mp&topic=twbs_jaxrs_impl_securejaxrs_downstreamresource
Nom du fichier : twbs_jaxrs_impl_securejaxrs_downstreamresource.html