Utilización de la señal de autorización predeterminada para propagar atributos de seguridad

En este tema se describe cómo utiliza WebSphere Application Server la señal de autorización predeterminada. Utilice la señal de autorización predeterminada cuando tenga que buscar un lugar para añadir atributos de serie que se propagarán en sentido descendente.

Acerca de esta tarea

No obstante, asegúrese de que los atributos que vaya a añadir a la señal de autorización sean específicos del usuario asociado con el sujeto autenticado. Si no son específicos de un usuario, los atributos pertenecerán probablemente a la señal de propagación, que también se propaga con la solicitud. Para obtener más información sobre la señal de propagación, consulte Utilización de la señal de propagación predeterminada para propagar atributos de seguridad. Para añadir atributos a la señal de autorización, debe conectar un módulo de inicio de sesión personalizado a los distintos módulos de inicio de sesión del sistema que estén configurados. Una configuración de módulo de inicio de sesión que tenga configurada la implementación com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule puede recibir información propagada y puede generar información de propagación que se puede enviar fuera a otro servidor.

Si los atributos propagados no se presentan en la configuración de inicio de sesión durante un inicio de sesión inicial, se crea una señal de autorización predeterminada en el módulo de inicio de sesión wsMapDefaultInboundLoginModule después de que se inicie la sesión en el módulo ltpaLoginModule. Se puede obtener una referencia a la señal de autorización predeterminada a partir del método login utilizando el mapa de totales de control, hashmap, sharedState. Debe conectar el módulo de inicio de sesión personalizado después de la implementación de wsMapDefaultInboundLoginModule para que WebSphere Application Server pueda ver la señal de autorización por omisión.

Para obtener más información sobre el modelo de programación JAAS (Java™ Authentication and Authorization Service), consulte el artículo Seguridad: Recursos de aprendizaje.

Procedimiento

Ejemplo

El siguiente ejemplo muestra la tarea completa de obtención de una referencia a la señal de autorización predeterminada a partir del método de inicio de sesión (login), de adición de atributos a la señal y de lectura de los atributos existentes que se utilizan para la autorización.
public customLoginModule() 
{
	public void initialize(Subject subject, CallbackHandler callbackHandler, 
          Map sharedState, Map options) 
	{
     // (Para obtener más información sobre la inicialización, consulte 
     // Desarrollo de módulos de inicio de sesión personalizados para una configuración de inicio de sesión del sistema para JAAS.)

				// Obtenga una referencia a la correlación sharedState que se pasa durante la
inicialización.
		_sharedState = sharedState;
	}

	public boolean login() throws LoginException 
	{
     // (Para obtener más información sobre los pasos a seguir durante la conexión, consulte
     // Desarrollo de módulos de inicio de sesión personalizados para una configuración de inicio de sesión del sistema para JAAS.)

				// Busque el AuthorizationToken por omisión en el estado compartido
				defaultAuthzToken  = (com.ibm.wsspi.security.token.AuthorizationToken) 
       sharedState.get 
										(com.ibm.wsspi.security.auth.callback.Constants.WSAUTHZTOKEN_KEY);

				// Puede que no siempre se genere uno de estos valores. Depende de la 
     // configuración de inicio de sesión.
		if (defaultAuthzToken != null)
		{
			try
			{
								// Añada un atributo personalizado
								defaultAuthzToken.addAttribute("key1", "value1");

								// Determine todos los atributos y valores que existen en la señal.
								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 ("Key: " + key + ", Value[" + i + "]: " 
                  + values[i]);
					}
				}

								// Lea el atributo uniqueID existente.
								String[] 	uniqueID = defaultAuthzToken.getAttributes 
											(com.ibm.wsspi.security.token.AttributeNameConstants.
               WSCREDENTIAL_UNIQUEID);

										// Obtenga el uniqueID de String[]
										String unique_id = (uniqueID != null && 
                uniqueID[0] != null) ? uniqueID[0] : "";

								// Lea el atributo de caducidad existente.
								String[] 	expiration = defaultAuthzToken.getAttributes 
											(com.ibm.wsspi.security.token.AttributeNameConstants.
               WSCREDENTIAL_EXPIRATION);

										// Un ejemplo de cómo obtener un valor de caducidad largo de la matriz de
series.
										long expire_time = 0;
										if (expiration != null && expiration[0] != null) 
												expire_time = Long.parseLong(expiration[0]);

								// Lea el atributo de nombre de visualización existente.
								String[] 	securityName = defaultAuthzToken.getAttributes 
											(com.ibm.wsspi.security.token.AttributeNameConstants.
               WSCREDENTIAL_SECURITYNAME);

										// Obtenga el nombre de visualización de String[]
										String display_name = (securityName != null && 
                securityName[0] != null) ? securityName[0] : "";


								// Lea el atributo longsecurityName existente.
								String[] 	longSecurityName = defaultAuthzToken.getAttributes 
										(com.ibm.wsspi.security.token.AttributeNameConstants.
             WSCREDENTIAL_LONGSECURITYNAME);

								// Obtenga el nombre de seguridad largo de String[]
								String long_security_name = (longSecurityName != null && 
              longSecurityName[0] != null) ? longSecurityName[0] : "";


								// Lea el atributo de grupo existente.
								String[] 	groupList = defaultAuthzToken.getAttributes 
											(com.ibm.wsspi.security.token.AttributeNameConstants.
               WSCREDENTIAL_GROUPS);

								// Obtenga los grupos de 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 
	{
		// (Si desea obtener más información sobre qué hacer durante la confirmación, consulte
     // Desarrollo de módulos de inicio de sesión personalizados para una configuración de inicio de sesión del sistema para JAAS.)

	}

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

Icon that indicates the type of topic Task topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_defauthtoken
File name: tsec_defauthtoken.html