Desarrollo de un interceptor de asociación de confianza personalizado

Cuando se desarrollan aplicaciones SIP (Session Initiation Protocol), puede crear un interceptor de asociación de confianza (TAI) personalizado.

Antes de empezar

Debe estar familiarizado con la información general de TAI que se incluye en la documentación Asociaciones de confianza. El desarrollo de un TAI de SIP es parecido al desarrollo de otros interceptores personalizados que se utilizan en las asociaciones de confianza. De hecho, un TAI personalizado para una aplicación SIP es realmente una ampliación del modelo de interceptor de asociación de confianza. Consulte el apartado Desarrollo de un interceptor personalizado para asociaciones de confianza para obtener más información.

Acerca de esta tarea

El TAI puede invocarlo una solicitud de servlet SIP o una respuesta de servlet SIP. Para implementar un TAI de SIP personalizado, debe escribir su propia clase Java.

Procedimiento

  1. Escriba una clase Java que amplíe la clase com.ibm.wsspi.security.tai.BaseTrustAssociationInterceptor e implemente la interfaz com.ibm.websphere.security.tai.SIPTrustAssociationInterceptor. Esas clases se definen en el archivo dir_producto_WAS/plugins/com.ibm.ws.sip.container_1.0.0.jar, donde dir_producto_WAS es el nombre de la vía de acceso plenamente cualificada del directorio donde está instalado WebSphere Application Server.
  2. Declare los siguientes métodos Java:
    public int initialize(Properties properties) throws WebTrustAssociationFailedException;
    Este método se invoca antes de procesar el primer mensaje, para que la implementación pueda asignar los recursos necesarios. Por ejemplo, puede establecer una conexión con una base de datos. WebTrustAssociationFailedException se define en el archivo dir_producto_WAS/plugins/com.ibm.ws.runtime_1.0.0.jar. El valor del argumento properties proviene de las Propiedades personalizadas establecidas en este paso.
    public void cleanup();
    Este método se invoca cuando el TAI debe liberar algunos de los recursos que mantiene. Por ejemplo, puede cerrar una conexión con una base de datos.
    public boolean isTargetProtocolInterceptor(SipServletMessage sipMsg) throws WebTrustAssociationFailedException;
    El TAI personalizado debe utilizar este método para manejar el mensaje sipMsg. Si el método devuelve false, WebSphere ignora el TAI para sipMsg.
    public TAIResult negotiateValidateandEstablishProtocolTrust (SipServletRequest req, SipServletResponse resp) throws WebTrustAssociationFailedException;
    Este método devuelve un TAIResult que indica el estado del mensaje que se está procesando y un ID de usuario o el ID exclusivo del usuario que está intentando autenticarse. Si la autenticación es satisfactoria, TAIResult debe contener el estado HttpServletResponse.SC_OK y un principal. Si la autenticación falla, TAIResult debe contener un código de retorno HttpServletResponse.SC_UNAUTHORIZED (401), SC_FORBIDDEN (403) o SC_PROXY_AUTHENTICATION_REQUIRED (407). Sólo indica si el contenedor debe aceptar o no un mensaje para continuar el proceso. Para solicitar la identificación de una solicitud entrante, la implementación TAI debe generar y enviar su propia SipServletResponse con una identificación incluida. Se debe generar la excepción para los errores de TAI internos. En Tabla 1 se describe los valores de argumento y las acciones resultantes para el método negotiateValidateandEstablishProtocolTrust.
    Tabla 1. Descripción de los argumentos y las acciones de negotiateValidateandEstablishProtocolTrust.

    En esta tabla se proporciona una descripción de los argumentos y las acciones de negotiateValidateandEstablishProtocolTrust.

    Argumento o acción Para una solicitud SIP Para una respuesta SIP
    Valor del argumento req La solicitud entrante Nulo
    Valor del argumento resp Nulo La respuesta entrante
    Acción para las credenciales de respuesta válidas Devolver el TAIResult.status que contiene SC_OK y un ID de usuario o un ID exclusivo Devolver el TAIResult.status que contiene SC_OK y un ID de usuario o un ID exclusivo
    Acción para las credenciales de respuesta incorrectas Devolver el TAIResult con el estado 4xx Devolver el TAIResult con el estado 4xx
    La secuencia de sucesos es la siguiente:
    1. El contenedor SIP correlaciona las peticiones iniciales con las aplicaciones utilizando las reglas de cada descriptor de despliegue de aplicaciones; los mensajes posteriores se correlacionan según los mecanismos de JSR 116.
    2. Si una de las aplicaciones requiere seguridad, el contenedor SIP invoca las implementaciones TAI definidas para el mensaje.
    3. Si el mensaje pasa la seguridad, el contenedor invoca las aplicaciones correspondientes.
    La implementación TAI puede modificar un mensaje SIP, pero el mensaje modificado no se podrá utilizar en el proceso de correlación de solicitudes, ya que finaliza antes de que el contenedor invoque el TAI.

    La clase com.ibm.wsspi.security.tai.TAIResult, definida en el archivo WASProductDir/plugins/com.ibm.ws.runtime_1.0.0.jar, tiene tres métodos estáticos para crear un TAIResult. Los métodos create de TAIResult toman un tipo de entero como primero parámetro. WebSphere Application Server espera que el resultado sea un código de retorno válido de petición HTTP, que se puede interpretar de la siguiente manera:

    Si el valor es HttpServletResponse.SC_OK, esta respuesta indica a WebSphere Application Server que el TAI ha completado la negociación. La respuesta también indica a WebSphere Application Server que debe utilizar la información de TAIResult para crear una identidad de usuario.

    Los TAIResults creados tienen los significados que se muestran en Tabla 2.

    Tabla 2. Significados de TAIResults.

    En esta tabla se muestran los significados de TAIResults

    TAIResult Explicación
    public static TAIResult create(int status); Indica un estado en WebSphere Application Server. El estado no puede ser SC_OK porque se proporciona la información de identidad.
    public static TAIResult create(int status, String principal); Indica un estado en WebSphere Application Server y proporciona el ID de usuario o el ID exclusivo de este usuario. WebSphere Application Server crea credenciales consultando el registro de usuarios.
    public static TAIResult create(int status, String principal, Subject subject); Indica un estado en WebSphere Application Server, el ID de usuario o el ID exclusivo del usuario, y un sujeto personalizado. Si el sujeto contiene una tabla de totales de control, el principal se ignora. El contenido del sujeto formará parte del sujeto del usuario eventual.
    public String getVersion();
    Este método devuelve el número de versión de la implementación TAI actual.
    public String getType();
    El valor de retorno de este método depende de la implementación.
  3. Compile la implementación una vez implementada. Por ejemplo: /opt/WebSphere/AppServer/java/bin/javac -classpath /opt/WebSphere/AppServer/plugins/com.ibm.ws.runtime_1.0.0.jar;/opt/WebSphere/AppServer/dev/JavaEE/j2ee.jar;/opt/WebSphere/AppServer/plugins/com.ibm.ws.sip.container_1.0.0.jar myTAIImpl.java
    1. Para cada servidor de un clúster, copie el archivo de clase en una ubicación en la classpath de WebSphere (preferiblemente el directorio WASProductDir/plugin/).
    2. Reinicie todos los servidores.
  4. Suprima el interceptor WebSEAL por omisión en la consola administrativa y pulse Nuevo para añadir el interceptor personalizado. Verifique que el nombre de clase esté separado por puntos y que aparezca en la classpath.
  5. Pulse el enlace Propiedades personalizadas para añadir las propiedades adicionales que sean necesarias para inicializar el interceptor personalizado. Estas propiedades se pasan al método initialize(Properties properties) de la implementación cuando se amplía el com.ibm.websphere.security.WebSphereBaseTrustAssociationInterceptor como se describe en el paso anterior.
  6. Guarde y sincronice (si es aplicable) la configuración.
  7. Reinicie los servidores para que el interceptor personalizado entre en vigor.

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=tsip_devctai
File name: tsip_devctai.html