Desarrollo de un TAI SIP personalizado
Al desarrollar aplicaciones SIP (Session Initiation Protocol), puede crear un interceptor de asociación de confianza (TAI) personalizado.
Antes de empezar
Acerca de esta tarea
Una solicitud de servlet SIP o una respuesta de servlet SIP puede invocar un TAI. Para implementar un TAI SIP personalizado, tendrá que escribir su propia clase Java™.
Procedimiento
- Escriba una clase Java que amplía la clase com.ibm.wsspi.security.tai.extension.BaseTrustAssociationInterceptor e implementa la interfaz com.ibm.websphere.security.tai.extension.SIPTrustAssociationInterceptor. Estas clases están definidas en el archivo ${wlp.install.dir}/dev/api/ibm/ccom.ibm.websphere.appserver.api.sipServletSecurity.1.0_1.0.10.jar.
- Declare los métodos Java
siguientes:
- public int initialize(Properties properties) throws WebTrustAssociationFailedException;
- Esto se invoca antes de que se procese el primer mensaje, de forma que la implementación puede asignar cualquier recursos que necesita. Por ejemplo, podría establecer una conexión a una base de datos. WebTrustAssociationFailedException está definido en el archivo ${wlp.install.dir}/lib/com.ibm.websphere.security_1.0.10.jar. El valor del argumento properties procede de la configuración de <trustAssociation>.
- public void cleanup();
- Esto se invoca cuando el TAI puede liberar cualquier recurso que contiene. Por ejemplo, podría cerrar una conexión a una base de datos.
- public boolean isTargetProtocolInterceptor(SipServletMessage sipMsg) throws WebTrustAssociationFailedException;
- El TAI personalizado puede 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 para el usuario que está intentando autenticarse. Si la
autenticación es satisfactoria, TAIResult contiene
el estado HttpServletResponse.SC_OK y un
principal. Si la autenticación falla, TAIResult
contendrá un código de retorno de HttpServletResponse.SC_UNAUTHORIZED
(401), SC_FORBIDDEN (403),
o SC_PROXY_AUTHENTICATION_REQUIRED (407).
Esto solo indica si el contenedor deberá aceptar un mensaje para su
proceso adicional. Para solicitar una petición entrante, la
implementación de TAI debe generar y enviar su propia
SipServletResponse que contiene una solicitud. La
excepción se puede lanzar para errores de TAI internos. La
tabla 1
describe los valores de argumento y las acciones resultantes para el
método negotiateValidateandEstablishProtocolTrust.La secuencia de sucesos es el siguiente:
Tabla 1. Descripción de argumentos y acciones de negotiateValidateandEstablishProtocolTrust. Esta tabla 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 credenciales de respuesta válidas Devolver TAIResult.status que contiene SC_OK y un ID de usuario o un ID exclusivo Devolver TAIResult.status que contiene SC_OK y un ID de usuario o un ID exclusivo Acción para credenciales de respuesta incorrectas Devolver TAIResult con el estado 4xx Devolver TAIResult con el estado 4xx - El contenedor SIP correlaciona solicitudes iniciales con aplicaciones utilizando las reglas de cada descriptor de despliegue de aplicaciones; los mensajes posteriores se correlacionan basándose en mecanismos de JSR289.
- Si alguna de las aplicaciones requiere seguridad, el contenedor SIP invoca cualquier implementación de TAI para el mensaje.
- Si el mensaje pasa la seguridad, el contenedor invoca las aplicaciones correspondientes.
La clase com.ibm.wsspi.security.tai.TAIResult, que está definida en el archivo ${wlp.install.dir}/lib/com.ibm.ws.security.authentication.tai_1.0.10.jar, tiene tres métodos estáticos para crear un TAIResult. Los métodos TAIResult create toman un tipo int como primer parámetro. El WebSphere Application Server espera que el resultado sea un código de retorno de solicitud HTTP válido y se interpreta del modo siguiente:
Si el valor es HttpServletResponse.SC_OK, esta respuesta indica a WebSphere que el TAI ha completado su negociación. La respuesta también indica a WebSphere que utilice la información de TAIResult para crear una identidad de usuario.
Los TAIResults creados tienen los significados que se muestran en la tabla 2.
Tabla 2. Significados de TAIResults. Esta tabla lista los significados de TAIResults
TAIResult Descripción public static TAIResult create(int status); Indica un estado de WebSphere Application Server. El estado no debería ser SC_OK porque se proporciona la información de identidad. public static TAIResult create(int status, String principal); Indica un estado de WebSphere Application Server y proporciona el ID de usuario o el ID exclusivo para este usuario. WebSphere crea credenciales consultando el registro de usuarios. public static TAIResult create(int status, String principal, Subject subject); Indica un estado de WebSphere Application Server, el ID de usuario o el ID exclusivo para el usuario y un sujeto personalizado. Si el sujeto contiene una tabla hash, el principal se ignora. El contenido del sujeto pasa a formar parte del sujeto de usuario eventual. - public String getVersion();
- Este método devuelve el número de versión de la implementación actual de TAI.
- public String getType();
- El valor de retorno de este método depende de la implementación.
- Compile la implementación después de haberla implementado para crear su propio archivo jar de TAI SIP.
- Siga los pasos 3-4 descritos en el tema Configuración de TAI en Liberty para configurar el servidor Liberty para utilizar el TAI SIP.


http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=twlp_custom_sip_tai
Nombre de archivo:twlp_custom_sip_tai.html