Desarrollo de un interceptor personalizado para asociaciones de confianza
Puede definir el método de la clase de interceptor que desea utilizar. WebSphere Application Server da soporte a dos interfaces de interceptor de asociación de confianza: com.ibm.wsspi.security.TrustAssociationInterceptor y com.ibm.wsspi.security.tai.TrustAssociationInterceptor.
Antes de empezar
Procedimiento
- Defina el método de la clase de interceptor. WebSphere Application Server proporciona la interfaz
Java™
de interceptor, com.ibm.wsspi.security.TrustAssociationInterceptor,
que define los métodos siguientes:
- public boolean isTargetInterceptor(HttpServletRequest req) creates WebTrustAssociationException;.
El método isTargetInterceptor determina si la solicitud se ha originado con el servidor proxy asociado al interceptor. El código de implementación debe analizar el objeto de solicitud entrante y determinar si el servidor proxy que envía la solicitud es un servidor proxy válido para este interceptor. El resultado de este método determina si el interceptor procesa la solicitud.
- public void validateEstablishedTrust (HttpServletRequest req) creates WebTrustAssociationException;.
El método validateEstablishedTrustdetermina si se confía o no en el servidor proxy desde el cual se originó la solicitud. Se llama a este método después del método isTargetInterceptor. El código de implementación debe autenticar el servidor proxy. El mecanismo de autenticación es específico del servidor proxy. Por ejemplo, en la implementación de producto del servidor WebSEAL, este método recupera la información de autenticación básica de la cabecera HTTP y valida la información en el registro de usuarios que utiliza WebSphere Application Server. Si las credenciales no son válidas, el código crea WebTrustAssociationException, que indica que no se confía en el servidor proxy y que la petición es rechazada.
- public String getAuthenticatedUsername(HttpServletRequest req) creates WebTrustAssociationException;.
Se llama al método getAuthenticatedUsername después de que se establezca la confianza entre el servidor proxy y WebSphere Application Server. El producto ha aceptado la autenticación del servidor proxy de la solicitud y ahora debe autorizar la solicitud. Para autorizar la petición, el nombre del solicitante original debe estar sujeto a una política de autorización para determinar si el solicitante tiene el privilegio necesario. El código de implementación de este método debe extraer el nombre de usuario de una cabecera de petición HTTP y determinar si el usuario está autorizado para el recurso solicitado. Por ejemplo, en la implementación de producto del servidor WebSEAL, el método busca un atributo iv-user en la cabecera de petición HTTP y extrae el ID de usuario asociado para la autorización.
- public boolean isTargetInterceptor(HttpServletRequest req) creates WebTrustAssociationException;.
- Configuración del interceptor. Para que se pueda configurar un interceptor, éste debe ampliar com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor.
Implemente los métodos siguientes:
- public int init (java.util.Properties props);
- El método init(Properties) acepta un objeto java.util.Properties, que contiene el conjunto de propiedades necesarias para inicializar el interceptor.
Todas las propiedades establecidas para un interceptor (utilizando el enlace Propiedades personalizadas para dicho
interceptor o utilizando scripts) se envían a este método. El interceptor puede utilizar estas propiedades para inicializarse. Por ejemplo, en la implementación del producto para el servidor WebSeal, este método lee los nombres de hosts y los puertos, de modo que se puede verificar si una solicitud de entrada procede de hosts y puertos de confianza. Un valor de retorno de 0 implica que la inicialización del interceptor se ha realizado correctamente.
Cualquier otro valor implica que la inicialización no se ha ejecutado correctamente y se ignorará el interceptor.
Validez de la lista siguiente
Si una implementación previa del interceptor de asociación de confianza devuelve un estado de error diferente, puede cambiar la implementación para que coincida con las expectativas o realizar uno de los siguientes cambios:- Añada la propiedad com.ibm.wsspi.security.trustassociation.initStatus a las propiedades personalizadas del interceptor de asociación de confianza. Establezca la propiedad en el valor que indica que el interceptor se ha inicializado correctamente. El resto de posibles valores implican que se ha producido un error. En caso de error, no se utiliza el interceptor de asociación de confianza correspondiente.
- Añada la propiedad com.ibm.wsspi.security.trustassociation.ignoreInitStatus a las propiedades personalizadas del interceptor de asociación de confianza. Establezca el valor de esta propiedad en true, que insta a WebSphere Application Server a ignorar el estado de este método. Si añade esta propiedad a las propiedades personalizadas, WebSphere Application Server no comprueba el estado de retorno, similar al de las versiones anteriores de WebSphere Application Server.
- public void cleanup ();
- Se llama a este método cuando el servidor de aplicaciones se detiene. Se utiliza para preparar al interceptor para su finalización.
- public void setVersion (String s);
- Este método es opcional. El método se utiliza para establecer la versión y sólo tiene fines informativos. El valor predeterminado es Unspecified.
Debe configurar los métodos siguientes implementados por la implementación del interceptor personalizado. Esta lista sólo muestra los métodos y no incluye ninguna implementación.******************************************************************** import java.util.*; import javax.servlet.http.HttpServletRequest; import com.ibm.websphere.security.*; public class myTAIImpl extends WebSphereBaseTrustAssociationInterceptor implements TrustAssociationInterceptor { public myTAIImpl () { } public boolean isTargetInterceptor (HttpServletRequest req) throws WebTrustAssociationException { //devuelve true si es el interceptor de destino, en caso contrario devuelve false. } public TAIResult negotiateValidateandEstablishTrust (HttpServletRequest req, HttpServletResponse res) throws WebTrustAssociationFailedException { //validar la solicitud es establecer confianza. //crear y devolver TAIResult public int initialize(Properties props) { //inicializa la implementación. ¡Si es correcto devuelve 0, de lo contrario, devuelve 1. } public String getVersion() { //Versión de retorno } public String getType() { //Tipo de retorno } public void cleanup () { //Borra el código. } }
Nota: Si el método init(Properties) se implementa, tal como se ha descrito previamente en el interceptor personalizado, esta nota no se aplica a la implementación y puede avanzar hasta el paso siguiente. Las versiones anteriores de com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor incluyen el método public int init (String propsfile). Este método ya no es necesario, ya que las propiedades del interceptor no se leen desde un archivo. Ahora, las propiedades se especifican en el enlace Propiedades personalizadas de la consola administrativa del interceptor, utilizando la consola administrativa o scripts. Estas propiedades están disponibles para la implementación en el método init(Properties). Sin embargo, para la compatibilidad con versiones anteriores, el método init(String) sigue soportado. El método init(String) es llamado por la implementación predeterminado de init(Properties), tal como se indica en el ejemplo siguiente:// Implementación por omisión del método init(Properties props).Una implementación // personalizada altera temporalmente esto. public int init (java.util.Properties props) { String type = props.getProperty("com.ibm.wsspi.security.trustassociation.types"); String classfile= props.getProperty("com.ibm.wsspi.security.trustassociation." +type+".config"); if (classfile != null && classfile.length() > 0 ) { return init(classfile); } else { return -1; } }
Cambie la implementación para implementar el método init(Properties), en lugar de confiar en el método init(String propsfile). Tal como se muestra en el ejemplo anterior, esta implementación predeterminado lee las propiedades para cargar el archivo de propiedad. La propiedad com.ibm.wsspi.security.trustassociation.types obtiene el archivo que contiene las propiedades concatenando .config a su valor.
Nota: Si lo desea puede utilizar el método init(String) que continúa funcionando, en lugar de implementar el método init(Properties). El único requisito es que se especifique ahora el nombre de archivo que contiene las propiedades de asociaciones de confianza personalizadas utilizando el enlace Propiedades personalizadas en la consola administrativa o utilizando scripts. Puede especificar la propiedad mediante cualquiera de los métodos siguientes. El primer método se utiliza para facilitar la compatibilidad con versiones anteriores de WebSphere Application Server.- Método 1:
- Los mismos nombres de propiedades que se utilizaban en el release anterior para obtener el nombre de archivo. El nombre de archivo se obtiene concatenando .config con el
valor de la propiedad com.ibm.wsspi.security.trustassociation.types.
Si el nombre del archivo es myTAI.properties y se encuentra en el directorio raíz_servidor_apl/properties, establezca las propiedades siguientes:
- com.ibm.wsspi.security.trustassociation.types = myTAItype
- com.ibm.wsspi.security.trustassociation.myTAItype.config = raíz_servidor_aplic/properties/myTAI.properties
Si el nombre del archivo es myTAI.properties y se encuentra en el directorio /properties, establezca las propiedades siguientes:
- com.ibm.wsspi.security.trustassociation.types = myTAItype
- com.ibm.wsspi.security.trustassociation.myTAItype.config = raíz_servidor_aplic/myTAI.properties
- Método 2:
- Puede establecer como la ubicación del archivo la propiedad
com.ibm.wsspi.security.trustassociation.initPropsFile de las
propiedades personalizadas de la asociación de confianza. Por
ejemplo, establezca la siguiente propiedad:
com.ibm.wsspi.security.trustassociation.initPropsFile= raíz_servidor_aplic/properties/myTAI.properties
com.ibm.wsspi.security.trustassociation.initPropsFile= raíz_servidor_aplic/myTAI.properties
Escriba el código anterior en una línea continua.
La ubicación del archivo de propiedades está totalmente cualificada (por ejemplo, raíz_servidor_apl/properties/myTAI.properties). Puesto que la ubicación puede ser diferente en un entorno WebSphere Application Server, Network Deployment, utilice variables como por ejemplo ${RAÍZ_INSTALACIÓN_USUARIO} para hacer referencia al directorio de instalación de WebSphere Application Server. Por ejemplo, si el nombre de archivo se denomina myTAI.properties y está ubicado en el directorio raíz_servidor_aplic/properties, establezca las propiedades siguientes:
La ubicación del archivo de propiedades está totalmente cualificada (por ejemplo, raíz_servidor_apl/myTAI.properties). Puesto que la ubicación puede ser diferente en un entorno WebSphere Application Server, Network Deployment, utilice variables como por ejemplo ${RAÍZ_INSTALACIÓN_USUARIO} para hacer referencia al directorio de instalación de WebSphere Application Server. Por ejemplo, si el nombre del archivo es myTAI.properties y se encuentra en el directorio /properties, establezca las propiedades siguientes:
- com.ibm.wsspi.security.trustassociation.types = myTAItype
com.ibm.wsspi.security.trustassociation.myTAItype.config = c:/WebSphere/AppServer/properties/myTAI.properties
com.ibm.wsspi.security.trustassociation.myTAItype.config = raíz_servidor_aplic/myTAI.properties
- Compile la implementación una vez la haya implementado.
Por ejemplo, app_server_root/java/bin/javac
-classpath raíz_instalación/plugins/com.ibm.ws.runtime.jar;<raíz_instalación>/dev/JavaEE/j2ee.jar
myTAIImpl.java
Identifique el archivo de clase de interceptor de asociación de confianza que se deberá utilizar cuando se reinicie el servidor. Coloque el archivo en el directorio raíz_servidor_aplicaciones/classes O utilice la propiedad del sistema de la JVM (Java Virtual Machine), -Dws.ext.dirs para especificar dónde reside el archivo.
Copie los archivos de clase de interceptor de asociación de confianza personalizado a una ubicación de la vía de acceso de clase del producto. Copie estos archivos de clase en el directorio raíz_perfil/classes.
Debe copiar este archivo de clase al directorio raíz_perfil/classes de cada nodo y célula.
- Reinicie todos los servidores.
- Suprima el interceptor WebSEAL predeterminado en la consola administrativa y pulse Nuevo para añadir el interceptor personalizado. Compruebe que el nombre de clase está separado por puntos y aparece en la vía de acceso de clases.
- Pulse el enlace Propiedades personalizadas para añadir propiedades adicionales que son necesarias para inicializar el interceptor personalizado. Estas propiedades se pasan al método init(Properties) de la implementación, cuando se amplía com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor, tal como se describe en el paso anterior.
- Guarde y sincronice (si es aplicable) la configuración.
- Reinicie los servidores para que el interceptor personalizado entre en vigor.
Ejemplo
Subtopics
Soporte de interceptor de asociación de confianza para la creación de sujetos
La interfaz TAI (Trust Association Interceptor), com.ibm.wsspi.security.tai.TrustAssociationInterceptor, da soporte a varias características distintas de la interfaz com.ibm.websphere.security.TrustAssociationInterceptor existente.


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=tsec_waci
File name: tsec_waci.html