Exemple : Module de connexion de jeton de propagation personnalisé

Cet exemple explique comment savoir si la connexion est une connexion initiale ou par propagation.

public customLoginModule() 
{
	public void initialize(Subject subject, CallbackHandler callbackHandler, 
         Map sharedState, Map options) 
	{
		// (Pour plus d'informations sur les actions à effectuer pendant l'initialisation, voir 
     // Développement de modules de connexion personnalisés pour une configuration de connexion système pour JAAS.)
	}

	public boolean login() throws LoginException 
	{
		// (Pour plus d'informations sur les actions à effectuer pendant la connexion, voir 
     // Développement de modules de connexion personnalisés pour une configuration de connexion système pour JAAS.)

		// Gère le WSTokenHolderCallback pour savoir s'il s'agit d'une connexion initiale
     // ou par propagation.
		Callback callbacks[] = new Callback[1];
		callbacks[0] = new WSTokenHolderCallback("Liste de jetons d'autorisation : ");
	        
		try
		{
			callbackHandler.handle(callbacks);
		} 
		catch (Exception e)
		{
			// gérer l'exception
		} 
            
		// Reçoit la liste de tableaux des objets TokenHolder (les jetons sérialisés)
		List authzTokenList = ((WSTokenHolderCallback) callbacks[0]).getTokenHolderList();
        
		if (authzTokenList != null)
		{
			// Lance une itération dans la liste à la recherche de votre jeton personnalisé
			for (int i = 0; i< authzTokenList.size(); i++)
			{
				TokenHolder tokenHolder = (TokenHolder)authzTokenList.get(i);

				// Recherche le nom et la version de votre implémentation de jeton de propagation
				if (tokenHolder.getName().equals("
              com.ibm.websphere.security.token.CustomPropagationTokenImpl") &&
				    tokenHolder.getVersion() == 1)
				{
					// Transmet les octets dans votre constructeur PropagationToken personnalisé 
            // à désérialiser
					customPropToken = new 									
						com.ibm.websphere.security.token.CustomPropagationTokenImpl(tokenHolder.
                  getBytes());

				}
			}
		}
		else // Il ne s'agit pas d'une connexion par propagation. Créez une nouvelle instance de 
          // votre implémentation PropagationToken
		{
			// Ajoute un nouveau jeton de propagation personnalisé. Il s'agit d'une connexion initiale 
			customPropToken = new com.ibm.websphere.security.token.CustomPropagationTokenImpl();

			// Ajoute tous les attributs initiaux
			if (customPropToken != null)
			{
				customPropToken.addAttribute("clé1", "valeur1");
				customPropToken.addAttribute("clé1", "valeur2");
				customPropToken.addAttribute("clé2", "valeur1");
				customPropToken.addAttribute("clé3", "autre chose");
			}
		}

		// Remarque : Vous pouvez ajouter le jeton à l'unité d'exécution pendant la validation au cas 
     // où quelque chose se passe pendant la connexion.
	}

	public boolean commit() throws LoginException 
	{
		// Pour plus d'informations sur les actions à effectuer pendant la validation, voir
     // Développement de modules de connexion personnalisés pour une configuration de connexion système pour JAAS.
		if (customPropToken != null)
		{
			// Définit le jeton de propagation sur l'unité d'exécution
			try
			{

				System.out.println(tc, "*** AJOUTE MON JETON DE PROPAGATION PERSONNALISE A L'UNITE D'EXECUTION ***");
				// Imprime les valeurs dans le jeton de propagation désérialisé
				java.util.Enumeration keys = customPropToken.getAttributeNames();
				while (keys.hasMoreElements()) 
				{
					String key = (String) keys.nextElement();
					String[] list = (String[]) customPropToken.getAttributes(key);
					for (int k=0; k<list.length; k++)
					System.out.println("Clé/Valeur : " + key + "/" + list[k]);
				}

				// Ceci le définit sur l'unité d'exécution en utilisant getName() + getVersion() comme clé
				com.ibm.wsspi.security.token.WSSecurityPropagationHelper.addPropagationToken(
              customPropToken);
			}
			catch (Exception e)
			{
				// Gère l'exception
			}


			// A présent, vous pouvez vérifier si vous l'avez défini correctement en essayant
       // de le récupérer à partir de l'unité d'exécution et d'imprimer les valeurs.
			try
			{
				// Ceci extrait le jeton de propagation de l'unité d'exécution avec les paramètres getName() 
          // et getVersion().
				com.ibm.wsspi.security.token.PropagationToken tempPropagationToken = 			
					com.ibm.wsspi.security.token.WSSecurityPropagationHelper.getPropagationToken 
						("com.ibm.websphere.security.token.CustomPropagationTokenImpl", 1);

				if  (tempPropagationToken != null)
				{
					System.out.println(tc, "*** A RECU MON JETON DE PROPAGATION PERSONNALISE 
               DE L'UNITE D'EXECUTION ***");
					// Imprime les valeurs dans le jeton de propagation désérialisé
					java.util.Enumeration keys = tempPropagationToken.getAttributeNames();
					while (keys.hasMoreElements()) 
					{
						String key = (String) keys.nextElement();
						String[] list = (String[]) tempPropagationToken.getAttributes(key);
						for (int k=0; k<list.length; k++)
						System.out.println("Clé/Valeur : " + key + "/" + list[k]);
					}
				}
			}
			catch (Exception e)
			{
				// Gère l'exception
			}
		}
	}

	// Définit vos variables de module de connexion
	com.ibm.wsspi.security.token.PropagationToken customPropToken = null;

}

Icône indiquant le type de rubrique Rubrique de référence



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