Personnalisation d'une connexion d'application afin d'effectuer une vérification d'identité avec JAAS

Vous pouvez utiliser l'infrastructure de connexion de service JAAS (Java™ Authentication and Authorization Service) pour créer une configuration de connexion JAAS utilisable pour établir une connexion à une vérification d'identité sous Liberty.

Pourquoi et quand exécuter cette tâche

En configurant la vérification d'identité avec une étape de validation des relations de confiance, vous pouvez faire en sorte qu'un application utilise votre configuration de connexion JAAS pour se connecter en effectuant une vérification d'identité à l'aide d'un programme. Voir IdentityAssertionLoginModule pour plus de détails.

Procédure

  1. Déléguez la validation des relations de confiance à un point de plug-in implémenté par l'utilisateur.
    La validation des relations de confiance est effectuée par un module de connexion personnalisé. Ce module de connexion personnalisé procède à la validation des relations de confiance requise, puis définit les informations de l'identité et des relations de confiance dans l'état partagé en vue de leur transmission au module de connexion par vérification d'identité. Une mappe est requise dans la clé dans l'état partagé suivante :
    com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.state
    Si l'état manque, un problème WSLoginFailedException est signalé par la classe IdentityAssertionLoginModule.
    La mappe dans la clé de l'état partagé doit inclure une clé de confiance dont le nom de clé est le suivant :
    com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.trust
    Si cette clé a pour valeur true, la confiance est établie. Si la clé a pour valeur false, la confiance n'est pas établie et la classe IdentityAssertionLoginModule crée un problème WSLoginFailedException.

    La mappe dans la clé de l'état partagé doit aussi définir l'une des ressources suivantes :

    • Une clé d'identité. Un principal java.security.Principal peut être défini dans la clé suivante :
      com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.principal
    • Un certificat java.security.cert.X509Certificate[]. Ce certificat peut être défini dans la clé suivante :
       com.ibm.wsspi.security.common.auth.module.IdentityAssertionLoginModule.certficates
    Si un principal et un certificat sont fournis, le principal est utilisé et un avertissement est généré.
  2. Créez une configuration JAAS pour les connexions d'application. Cette configuration JAAS contiendra le module de connexion personnalisé, dans lequel l'utilisateur implémente la validation de confiance, ainsi que la classe IdentityAssertionLoginModule. Définissez ensuite une configuration de connexion en ajoutant le code suivant au fichier server.xml :
    <jaasLoginContextEntry id="CustomIdentityAssertion" name="CustomIdentityAssertion" 
                           loginModuleRef="customIdentityAssertion,identityAssertion" />
    <jaasLoginModule id="customIdentityAssertion" 
                     className="com.ibm.ws.security.authentication.IdentityAssertionLoginModule" 
                     controlFlag="REQUIRED" libraryRef="customLoginLib"/>
    	<library id="customLoginLib">
        <fileset dir="${server.config.dir}" includes="IdentityAssertionLoginModule.jar"/>      
    	</library>
    Cette configuration JAAS est utilisée par l'application afin d'effectuer une vérification d'identité.
  3. Procédez à la vérification d'identité programmable. Un programme peut maintenant utiliser la configuration de connexion JAAS pour vérifier les identités à l'aide d'un programme. Ce programme d'application peut créer un contexte de connexion pour la configuration JAAS créée à l'étape 2, puis se connecter à ce contexte de connexion avec l'identité revendiquée. Si la connexion aboutit, l'identité peut être définie dans le processus d'exécution en cours. L'exemple suivant illustre ce processus :
    NameCallback handler = new NameCallback(new MyPrincipal("Joe"));
    LoginContext lc = new LoginContext("customIdentityAssertion", handler);
    lc.login();  //assume successful
    Subject s = lc.getSubject();
    WSSubject.setRunAsSubject(s);
    // From here on , the runas identity is "Joe"
    Remarque : La classe MyPrincipal est l'implémentation de l'interface java.security.Principal dans l'exemple.

Résultats

Avec l'infrastructure de connexion JAAS et deux modules de connexion que vous implémentez, vous pouvez créer une configuration de connexion JAAS que vous pouvez utiliser pour vous connecter à une vérification d'identité.

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

Nom du fichier : twlp_dev_custom_idassertion.html