Référentiel Liberty[8.5.5.6 ou ultérieure]

Configuration d'une connexion par programmation JAAS sur le conteneur du client d'application du profil Liberty

Le conteneur du client d'application du profil Liberty peut être configuré pour utiliser une connexion par programmation JAAS.

Avant de commencer

Etudiez les différentes façons d'authentifier les utilisateurs sur le conteneur du client d'application et décidez si la connexion par programmation est la meilleure option pour votre environnement. Pour plus de détails, voir Authentification sur le conteneur du client d'application du profil Liberty.

Pourquoi et quand exécuter cette tâche

Une connexion par programmation est un type de connexion par formulaire qui prend en charge les formulaires de connexion des présentations des applications pour l'authentification. Cette approche demande que le développeur de l'application collecte les données d'identification de l'utilisateur et authentifie cet utilisateur. Cette méthode permet de bénéficier de l'infrastructure JAAS pour envoyer les données d'identification d'un utilisateur au serveur afin de l'authentifier. L'infrastructure JAAS consiste à créer un contexte de connexion en spécifiant une configuration de connexion JAAS et en utilisant un gestionnaire d'appel pour regrouper les données d'identification de l'utilisateur. Lorsqu'un sujet est obtenu du contexte de connexion, vous pouvez utiliser une API de sécurité Liberty pour définir ce sujet sur l'unité d'exécution et il sera utilisé pour votre appel sortant vers le serveur.
La configuration de la connexion JAAS spécifie quels modules de connexion sont utilisés pour l'authentification et comment ils sont utilisés. Les configurations de connexion JAAS fournies par le profil Liberty sur le client sont les suivantes :
  • Configuration de connexion JAAS WSLogin : configuration de connexion JAAS générique qu'un conteneur de client d'application du profil Liberty peut utiliser pour réaliser l'authentification sur la base de l'ID et du mot de passe d'un utilisateur. Cependant, cette configuration ne prend pas en charge le gestionnaire CallbackHandler spécifié dans le descripteur de déploiement du module d'application client.
  • Configuration de connexion JAAS ClientContainer : cette configuration de connexion JAAS reconnaît le gestionnaire CallbackHandler spécifié dans le descripteur de déploiement du module d'application client, si spécifié. Si aucun gestionnaire n'a été spécifié dans le descripteur de déploiement, le gestionnaire spécifié par programme est utilisé.

    Les modules de connexion qui sont spécifiés par la configuration de connexion JAAS implémentent une technologie d'authentification définie. Un module de connexion peut rassembler les données d'identification de l'utilisateur à l'aide de l'interface javax.security.auth.callback.CallbackHandler. Le profil Liberty fournit une implémentation sans invite de l'interface CallbackHandler, qui est appelée com.ibm.websphere.security.auth.callback.WSCallbackHandlerImpl. Cette implémentation permet à un développeur d'application de spécifier les données d'identification directement dans l'application sans avoir à interagir avec l'utilisateur. Il existe deux façons de spécifier votre implémentation CallbackHandler :

    • En spécifiant votre implémentation par programmation, en tant qu'argument au constructeur javax.security.auth.login.LoginContext, par exemple :
      LoginContext logincontext = new LoginContext("ClientContainer", new WSCallbackHandlerImpl(“user”, "password"));
    • En spécifiant votre nom d'implémentation dans le descripteur de déploiement du module d'application client (application-client.xml), par exemple :
      <callbackhandler>com.acme.callbackhandler.WSCallbackHandlerImpl/<callbackhandler>
Remarque : La configuration de connexion WSLogin ne reconnaît pas la seconde option qui consiste à spécifier un gestionnaire CallbackHandler dans le descripteur de déploiement.

Procédure

  1. Ajoutez la fonction appSecurityClient-1.0 à votre fichier client.xml.
    <feature>appSecurityClient-1.0</feature>
  2. Configurez SSL pour votre client :
    1. Facultatif : utilisez la commande securityUtility pour créer un certificat SSL pour le client, par exemple :
      securityUtility createSSLCertificate --client=myClient --password=liberty
    2. Il est recommandé d'utiliser la commande securityUtility pour générer un mot de passe codé xor. Par exemple, pour coder le mot de passe liberty :
      securityUtility encode liberty
    3. Ajoutez un élément keyStore à votre fichier client.xml. L'exemple suivant utilise la configuration SSL par défaut :
      <keyStore id="defaultKeyStore" password=“{xor}MzY9Oi0rJg==“/> <!-- pwd:
      liberty -->
  3. Dans le code d'application, créez un Subject à l'aide de la configuration de connexion JAAS ClientContainer et du gestionnaire d'appel WSCallbackHandlerImpl.
    1. Avant que l'application ne génère une demande sortante, ajoutez le code suivant. Remplacez userName et userPassword par les données d'identification valides d'un utilisateur existant dans le registre d'utilisateurs du serveur cible.
      CallbackHandler wscbh = new WSCallbackHandlerImpl(“userName”, “userPassword”);
      LoginContext ctx = null;
      try {
            ctx = new LoginContext(“ClientContainer”, wscbh);
      } catch (LoginException le) {
            le.printStackTrace();
      }
      try {
            ctx.login();
      } catch (LoginException le) {
            le.printStackTrace();
      }
      Subject subject = ctx.getSubject();
  4. Définissez le Subject obtenu à l'étape précédente sur l'unité d'exécution et utilisez ce Subject pour rechercher un EJB. Utilisez les API WSSubject.doAs ou doAsPrivilieged pour effectuer cette action. Le sujet se trouvant dans le bloc de code com.ibm.websphere.security.auth.WSSubject.doAs ou com.ibm.websphere.security.auth.WSSubject.doAsPrivileged est utilisé pour vérifier les autorisations des ressources Java™ Platform, Enterprise Edition (J2EE).
    WSSubject.doAs(subject, new PrivilegedAction() {
        public Object run() {
               try {
                      //Perform EJB lookup and invocation
               } catch (Exception ex) {
                      ex.printStackTrace();
               }
               return null;
        }
    });

Que faire ensuite

Comme sur le serveur, vous pouvez utiliser un module de connexion personnalisé pour prendre des décisions d'authentification supplémentaires ou ajouter des informations sur le sujet pour prendre des décisions d'autorisation plus ciblées à l'intérieur de votre application client.

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=twlp_config_jaas_prog_login
Nom du fichier : twlp_config_jaas_prog_login.html