Utilisation du jeton d'autorisation par défaut pour propager les attributs de sécurité

Cette rubrique explique comment WebSphere Application Server utilise le jeton d'autorisation par défaut. Vous pouvez envisager d'utiliser le jeton d'autorisation par défaut lorsque vous rechercher un espace pour ajouter des attributs de chaîne qui sont propagés en aval.

Pourquoi et quand exécuter cette tâche

Toutefois, vérifiez que les attributs que vous ajoutez au jeton d'autorisation sont spécifiques à l'utilisateur associé au sujet authentifié. Si ce n'est pas le cas, les attributs appartiennent probablement au jeton de propagation, lequel est également propagé avec la demande. Pour plus d'informations sur le jeton de propagation, voir Utilisation du jeton de propagation par défaut pour propager les attributs de sécurité. Pour ajouter les attributs au jeton d'autorisation, vous devez connecter un module de connexion personnalisé dans les différents modules de connexion de système qui sont configurés. Toute configuration de module de connexion doté de l'implémentation com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule peut recevoir des informations propagées et générer des informations de propagation envoyées sous forme de communication sortante à un autre serveur.

Si les attributs propagés ne sont pas soumis à la configuration de connexion pendant une connexion initiale, un jeton d'autorisation par défaut est créé dans le module de connexion wsMapDefaultInboundLoginModule après l'établissement de la connexion dans le module de connexion ltpaLoginModule. Vous pouvez obtenir une référence au jeton d'autorisation par défaut de la méthode login à l'aide de la table de hachage sharedState. Vous devez connecter le module de connexion personnalisé après l'implémentation du module wsMapDefaultInboundLoginModule pour WebSphere Application Server afin de visualiser le jeton d'autorisation par défaut.

Pour plus d'informations sur le modèle de programmation JAAS (Java™ Authentication and Authorization Service), voir l'article "Sécurité : Ressources d'apprentissage".

Procédure

Exemple

L'exemple suivant présente la tâche d'obtention d'une référence pour le jeton d'autorisation par défaut à partir de la méthode de connexion, la tâche d'ajout d'attributs au jeton et celle de lecture à partir des attributs existants utilisés pour l'autorisation.
public customLoginModule() 
{
	public void initialize(Subject subject, CallbackHandler callbackHandler, 
          Map sharedState, Map options) 
	{
     // (Pour plus d'informations sur l'initialisation, voir
     // Développement de modules de connexion personnalisés pour une configuration de connexion système pour JAAS.)

		// Obtention d'une référence à la mappe sharedState transmise pendant l'initialisation.
		_sharedState = sharedState;
	}

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

		// Recherchez le jeton d'autorisation dans l'état partagé
		defaultAuthzToken  = (com.ibm.wsspi.security.token.AuthorizationToken) sharedState.get 
					(com.ibm.wsspi.security.auth.callback.Constants.WSAUTHZTOKEN_KEY);

		// Pas toujours généré. Cela dépend de la configuration 
     // de connexion.
		if (defaultAuthzToken != null)
		{
			try
			{
				// Ajoute un attribut personnalisé
				defaultAuthzToken.addAttribute("clé1", "valeur1");

				// Détermine tous les attributs et valeurs qui existent dans le jeton.
				java.util.Enumeration listOfAttributes = defaultAuthorizationToken.
              getAttributeNames();
				
				while (listOfAttributes.hasMoreElements())
				{
					String key = (String) listOfAttributes.nextElement();

					String[] values = (String[]) defaultAuthorizationToken.getAttributes (key);

					for (int i=0;  i<values.length; i++)
					{
						System.out.println ("Clé : " + key + ", Value[" + i + "]: " 
                  + values[i]);
					}
				}

				// Lit l'attribut ID unique existant.
				String[] 	uniqueID = defaultAuthzToken.getAttributes 
						(com.ibm.wsspi.security.token.AttributeNameConstants.
               WSCREDENTIAL_UNIQUEID);

					// Obtient l'ID unique à partir de la String[]
					String unique_id = (uniqueID != null && 
                uniqueID[0] != null) ? uniqueID[0] : "";

				// Lit l'attribut d'expiration existant.
				String[] 	expiration = defaultAuthzToken.getAttributes 
						(com.ibm.wsspi.security.token.AttributeNameConstants.
               WSCREDENTIAL_EXPIRATION);

					// Exemple d'obtention d'une valeur d'expiration longue à partir du tableau de type "chaîne de caractères".
					long expire_time = 0;
					if (expiration != null && expiration[0] != null) 
						expire_time = Long.parseLong(expiration[0]);

				// Lit l'attribut de nom affiché existant.
				String[] 	securityName = defaultAuthzToken.getAttributes 
						(com.ibm.wsspi.security.token.AttributeNameConstants.
               WSCREDENTIAL_SECURITYNAME);

					// Obtient le nom affiché à partir de la String[]
					String display_name = (securityName != null && 
                securityName[0] != null) ? securityName[0] : "";


				// Lit l'attribut nom de sécurité long existant.
				String[] 	longSecurityName = defaultAuthzToken.getAttributes 
					(com.ibm.wsspi.security.token.AttributeNameConstants.
             WSCREDENTIAL_LONGSECURITYNAME);

				// Obtient le nom de sécurité long à partir de la String[]
				String long_security_name = (longSecurityName != null && 
              longSecurityName[0] != null) ? longSecurityName[0] : "";


				// Lit l'attribut de groupe existant.
				String[] 	groupList = defaultAuthzToken.getAttributes 
						(com.ibm.wsspi.security.token.AttributeNameConstants.
               WSCREDENTIAL_GROUPS);

				// Obtient les groupes à partir de la String[]
				ArrayList groups = new ArrayList();
				if (groupList != null)
				{
					for (int i=0; i<groupList.length; i++)
					{
						System.out.println ("group[" + i + "] = " + groupList[i]);
						groups.add(groupList[i]);
					}
				}
			}
			catch (Exception e)
			{
				throw new WSLoginFailedException (e.getMessage(), e);
			}
		}

	}

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

	}

	private java.util.Map _sharedState = null;
	private com.ibm.wsspi.security.token.AuthorizationToken defaultAuthzToken = null;
}
.

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