En este tema se explica cómo puede crear su propia implementación
de señal de autenticación, que se establece en el sujeto de inicio de
sesión y se propaga en sentido descendente.
Acerca de esta tarea
Con esta implementación, puede
especificar una señal de autenticación que pueden utilizar una aplicación
o un módulo de inicio de sesión personalizados. 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 utilizando la serialización personalizada. Debe deserializar los bytes en el destino y añadir dicha
información a la hebra de nuevo. Esta tarea también puede incluir el cifrado y descifrado.
- Tener un efecto en la exclusividad general del sujeto mediante la API
getUniqueID.
Importante: El tiempo de ejecución de seguridad no
utiliza implementaciones de señales de autenticación personalizadas
en WebSphere Application Server
para forzar la autenticación. El tiempo de ejecución de seguridad de
WebSphere
Application sólo utiliza esta señal en las siguientes
situaciones:
- Método getBytes para la serialización
- Llame al método getForwardable para determinar si se serializa la señal
de autenticación.
- Método getUniqueId para la exclusividad
- Llame a los métodos getName y getVersion para añadir bytes
deserializados al contenedor de señales que se envía en sentido
descendente
Todos los demás usos son implementaciones personalizadas.
Para
implementar una señal de autenticación personalizada, debe realizar los
pasos siguientes:
- Escriba una implementación personalizada de la interfaz
AuthenticationToken. Hay varios métodos distintos para implementar la interfaz
AuthenticationToken. No obstante, asegúrese de que los métodos necesarios
para la interfaz AuthenticationToken y la interfaz de señales estén
completamente implementados. 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.
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 autenticación,
amplíen la clase abstracta y, con ello, la mayoría del trabajo habrá
finalizado.
Para ver una implementación de la interfaz
AuthenticationToken, consulte
Ejemplo: implementación de com.ibm.wsspi.security.token.AuthenticationToken
- Añada y reciba la señal de autenticació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.
No obstante, para deserializar la información, debe conectar un módulo de
inicio de sesión personalizado. Después de crear una instancia del objeto
en el módulo de inicio de sesión, puede añadir el objeto al sujeto
durante el método commit.
Si sólo desea añadir información al sujeto para que se
propague, consulte
Propagación de un objeto serializable Java personalizado para la propagación de atributos de seguridad. Si quiere garantizar que se propague la información, realizar su propia
serialización personalizada o bien especificar la exclusividad con el fin
de almacenar el sujeto en memoria caché, piense en escribir su propia
implementación de señal de autenticación.
El ejemplo de código que
aparece en
Ejemplo: módulo de inicio de sesión de señal de autenticación
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
autenticación personalizada y establézcala en el sujeto. Si la devolución
de llamada contiene datos de propagación, busque la instancia específica
de señal de autenticación TokenHolder personalizada, convierta la matriz
de byte al objeto AuthenticationToken personalizado y vuelva a establecerlo en el
sujeto. El ejemplo de código muestra ambas instancias.
Puede
hacer que la señal de autenticación sea de sólo lectura en la fase de
compromiso del módulo de inicio de sesión. Si no crea la señal de sólo
lectura, los atributos se pueden añadir en las aplicaciones.
- Añada el módulo de inicio de sesión personalizado a las configuraciones de
inicio de 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 autorización
personalizada.
Como este módulo de inicio de sesión se basa en la información del estado
compartido añadido por el módulo de inicio de sesión
com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule, añádalo
después del módulo de inicio de sesión
com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule. Para obtener
más información sobre como añadir el módulo de inicio de sesión personalizado 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.