En este tema se explica cómo puede crear su propia implementación de señal de propagación, que se establece en la hebra de ejecución y se propaga en sentido descendente.
Acerca de esta tarea
La señal de propagación predeterminada es
generalmente suficiente para que se propaguen los atributos que no son
específicos para usuario. Escriba su
propia implementación si desea lograr cualquiera de las acciones
siguientes tareas:
- Aislar los atributos en su propia implementación.
- Serializar la información mediante una serialización personalizada. Debe deserializar los bytes en el destino y añadir esa
información de nueva en la hebra conectando un módulo de inicio de sesión
personalizado a las configuraciones de inicio de sesión del sistema de entrada. Esta tarea también puede incluir el cifrado y descifrado.
Para implementar una señal de propagación personalizada, debe
realizar los pasos siguientes:
- Escriba una implementación personalizada de la interfaz
PropagationToken. Hay varios métodos distintos para implementar la interfaz
PropagationToken. No obstante, asegúrese de que los métodos necesarios
para la interfaz PropagationToken y la interfaz de señales estén
completamente implementados.
![[AIX Solaris HP-UX Linux Windows]](../images/dist.gif)
Después de
implementar esta interfaz, puede colocarla en el directorio raíz_servidor_apl/classes.
Alternativamente,
puede ubicar la clase en cualquier directorio privado. Sin embargo,
asegúrese de que el cargador de clases de
WebSphere
Application Server pueda localizar la clase y que se le otorguen los
permisos adecuados. Puede añadir el archivo JAR
(Java™
Archive) o directorio que contiene esta clase en el archivo
server.policy para que tenga los permisos que necesita el
código de servidor.
Tras implementar esta interfaz, puede colocarla en el directorio raíz_perfil/classes.
Si desea más información
sobre las clases, consulte Creación de un subdirectorio de clases en el perfil para clases personalizadas.
Consejo: Todos los tipos de
señales definidas por la infraestructura de propagación tienen
interfaces similares. Los tipos de señales son interfaces de marcador que implementan la interfaz
com.ibm.wsspi.security.token.Token. Esta interfaz define la mayoría de los
métodos. Si tiene pensado implementar más de un tipo de señal, piense en
crear una clase abstracta que implemente la interfaz
com.ibm.wsspi.security.token.Token. Es posible que todas las
implementaciones de las señales, incluido la señal de propagación,
amplíen la clase abstracta y, con ello, la mayoría del trabajo habrá
finalizado.
Para ver una implementación de la señal de
propagación, consulte
Ejemplo: Implementación de com.ibm.wsspi.security.token.PropagationToken
- Añada y reciba la señal de propagación personalizada
durante los inicios de sesión de
WebSphere
Application Server. Esta tarea concluye generalmente
con la adición de un módulo de inicio de sesión personalizado a las
distintas configuraciones de inicio de sesión del sistema y aplicaciones.
También puede añadir la implementación desde una aplicación. No
obstante, para deserializar la información, debe conectar un módulo de inicio
de sesión personalizado, que se analiza en
Propagación de un objeto serializable Java personalizado para la propagación de atributos de seguridad. La clase WSSecurityPropagationHelper tiene las API que se utilizan para
establecer una señal de propagación en la hebra y recuperarlo de la hebra
para realizar actualizaciones.
El ejemplo de código en
el apartado Ejemplo: módulo de inicio de sesión de señal de propagación personalizado muestra cómo
determinar si el inicio de sesión es inicial o de propagación. La
diferencia entre estos tipos de inicios de sesión consiste en si el
retorno de llamada WSTokenHolderCallback contiene datos de propagación o
no. Si la devolución de llamada no contiene datos de propagación,
inicialice una nueva implementación de señal de propagación y
establézcala en la hebra. Si la devolución de llamada contiene datos de propagación, busque la instancia de señal de propagación TokenHolder personalizada, convierta la matriz de bytes al objeto PropagationToken personalizado y vuelva a establecerlo en la hebra. El ejemplo de código muestra ambas instancias.
Puede añadir atributos siempre que se añada la señal de propagación personalizada a la hebra. Si añade atributos entre solicitudes y cambia el método getUniqueId, la sesión
de cliente CSIv2 (Common Secure Interoperability Versión 2) se invalida para que pueda enviar la nueva información en sentido descendente. La adición de atributos entre las solicitudes pueden afectar al rendimiento. En muchos casos, es
recomendable que las solicitudes en sentido descendente reciban la nueva
información de señales de propagación.
Para añadir la señal de propagación personalizada a la hebra, llame al método WSSecurityPropagationHelper.addPropagationToken. Esta llamada
requiere el permiso de la seguridad de Java
2 WebSphereRuntimePerMission "setPropagationToken".
- Añada el módulo de inicio de sesión
personalizado a las configuraciones de inicio del sesión del sistema
WebSphere
Application Server que ya contengan el módulo de inicio de sesión
com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule para
recibir versiones serializadas de la señal de propagación personalizada. Asimismo, puede añadir este módulo de inicio de sesión a cualquiera de los
inicios de sesión de aplicación donde desee generar la señal de
propagación personalizada en la hebra durante el inicio de sesión. Alternativamente,
puede generar la implementación de PropagationToken personalizado
desde dentro de la aplicación.
No obstante, para deserializarla, debe añadir la implementación a los módulos de inicio de sesión
del sistema.
Para obtener
más información sobre como añadir el módulo de inicio de sesión a las
configuraciones de inicio de sesión existentes, consulte
Desarrollo de módulos de inicio de sesión personalizados para una configuración de inicio de sesión del sistema para JAAS.