Développement d'un intercepteur de relations de confiance SIP personnalisé

Lorsque vous développez des applications SIP (Session Initiation Protocol), vous devez créer un intercepteur TAI (Trust Association Interceptor, intercepteur de relations de confiance) personnalisé.

Avant de commencer

Le développement d'un intercepteur TAI SIP est identique au développement de tout autre intercepteur personnalisé utilisé dans une relation de confiance. En fait, un intercepteur de relations de confiance personnalisé pour une application SIP est une extension du modèle d'intercepteur de relations de confiance.

Pourquoi et quand exécuter cette tâche

L'intercepteur TAI peut être appelé par une demande ou une réponse de servlet SIP. Pour implémenter un intercepteur TAI SIP personnalisé, vous devez écrire votre propre classe Java™.

Procédure

  1. Ecrivez une classe Java qui étende la classe com.ibm.wsspi.security.tai.extension.BaseTrustAssociationInterceptor et implémente l'interface com.ibm.websphere.security.tai.extension.SIPTrustAssociationInterceptor. Ces classes sont définies dans le fichier ${wlp.install.dir}/dev/api/ibm/ccom.ibm.websphere.appserver.api.sipServletSecurity.1.0_1.0.10.jar.
  2. Déclarez les méthodes Java suivantes :
    public int initialize(Properties properties) throws WebTrustAssociationFailedException;
    Cette méthode est appelée avant le traitement du premier message, afin que l'implémentation puisse allouer les ressources nécessaires. Elle peut, par exemple, établir une connexion à une base de donnés. WebTrustAssociationFailedException est défini dans le fichier ${wlp.install.dir}/lib/com.ibm.websphere.security_1.0.10.jar . La valeur de l'argument properties est fournie par la configuration <trustAssociation>.
    public void cleanup();
    Cette méthode est appelée quand l'intercepteur de relations de confiance peut libérer une ressource qu'il détient. Par exemple, il peut mettre fin à une connexion à une base de données.
    public boolean isTargetProtocolInterceptor(SipServletMessage sipMsg) throws WebTrustAssociationFailedException;
    Votre intercepteur de relations de confiance personnalisé peut utiliser cette méthode pour gérer le message sipMsg. Si la méthode renvoie la valeur false, WebSphere ignore votre intercepteur TAI pour sipMsg.
    public TAIResult negotiateValidateandEstablishProtocolTrust (SipServletRequest req, SipServletResponse resp) throws WebTrustAssociationFailedException;
    Cette méthode renvoie un résultat TAIResult qui indique le statut du message en cours de traitement et un ID utilisateur ou l'ID unique de l'utilisateur qui tente de s'authentifier. Si l'authentification aboutit, le résultat TAIResult contient le statut HttpServletResponse.SC_OK et un principal. Si l'authentification échoue, le résultat TAIResult contient un code retour de HttpServletResponse.SC_UNAUTHORIZED (401), SC_FORBIDDEN (403) ou SC_PROXY_AUTHENTICATION_REQUIRED (407). Ce résultat indique seulement si le conteneur doit accepter un message pour traitement supplémentaire. Pour tester une demande entrante, l'implémentation de l'intercepteur TAI doit générer et envoyer sa propre réponse SipServletResponse contenant un test. L'exception peut être émise pour des erreurs d'intercepteur TAI internes. Le Tableau 1 décrit les valeurs d'argument et les actions résultantes pour la méthode negotiateValidateandEstablishProtocolTrust.
    Tableau 1. Description des arguments et des actions de negotiateValidateandEstablishProtocolTrust.

    Ce tableau fournit une description des arguments et actions de negotiateValidateandEstablishProtocolTrust

    Argument ou action Pour une demande SIP Pour une réponse SIP
    Valeur de l'argument req La demande entrante Nulle
    Valeur de l'argument resp Nulle La réponse entrante
    Action pour les données d'identification de réponse valides Renvoie TAIResult.status contenant SC_OK et un ID utilisateur/ID unique Renvoie TAIResult.status contenant SC_OK et un ID utilisateur/ID unique
    Action pour les données d'identification incorrectes Renvoie le résultat TAIResult avec le statut 4xx Renvoie le résultat TAIResult avec le statut 4xx
    La séquence d'événements est la suivante :
    1. Le conteneur SIP mappe les demandes initiales aux applications en utilisant les règles de chaque descripteur de déploiement des applications. Les messages suivants sont mappés en fonction des mécanismes JSR289.
    2. Si une des applications doit être sécurisée, le conteneur SIP appelle une implémentation d'intercepteur TAI pour le message.
    3. Si le messages franchit la sécurité, le conteneur appelle les applications correspondantes.
    L'implémentation de l'intercepteur TAI peut modifier un message SIP, mais le message modifié ne peut pas être utilisé dans le processus de mappage de demandes, car il prend fin avant que le conteneur appelle l'intercepteur TAI.

    La classe com.ibm.wsspi.security.tai.TAIResult, qui est définie dans le fichier ${wlp.install.dir}/lib/com.ibm.ws.security.authentication.tai_1.0.10.jar, possède trois méthodes statiques de création de résultat TAIResult. Les méthodes TAIResult create prennent un type int comme premier paramètre. WebSphere Application Server s'attend à ce que le résultat soit un code retour de demande HTTP valide et l'interprète comme suit :

    Si la valeur est HttpServletResponse.SC_OK, cette réponse indique à WebSphere que l'intercepteur TAI a terminé sa négociation. La réponse indique également à WebSphere d'utiliser les informations du résultat TAIResult pour créer une identité utilisateur.

    Les résultats TAIResults créés ont les significations fournies dans le Tableau 2.

    Tableau 2. Signification de la valeur TAIResults.

    Ce tableau répertorie les significations de TAIResults

    TAIResult Explication
    public static TAIResult create(int status); Indique un statut à WebSphere Application Server. Ce statut ne doit pas être SC_OK car les informations d'identité sont fournies.
    public static TAIResult create(int status, String principal); Indique un statut à WebSphere Application Server et fournit l'ID utilisateur ou l'ID unique de cet utilisateur. WebSphere crée des données d'identification en interrogeant le registre d'utilisateurs.
    public static TAIResult create(int status, String principal, Subject subject); Indique un statut à WebSphere Application Server, l'ID utilisateur ou l'ID unique de l'utilisateur, ainsi qu'un sujet personnalisé. Si l'objet contient un table de hachage, le principal est ignoré. Le contenu du sujet fait partie de l'objet utilisateur final.
    public String getVersion();
    Cette méthode renvoie le numéro de version de l'implémentation actuelle de l'intercepteur TAI.
    public String getType();
    La valeur renvoyée par cette méthode est dépendante de l'implémentation.
  3. Compilez l'implémentation une fois celle-ci terminée, afin de créer votre propre fichier jar TAI SIP.
  4. Suivez les étapes 3 et 4 décrites à la rubrique Configuration d'un intercepteur de relations de confiance dans Liberty pour configurer le serveur Liberty pour qu'il utilise l'intercepteur TAI SIP.

Icône indiquant le type de rubrique Rubrique Tâche



Icône d'horodatage Dernière mise à jour: Tuesday, 6 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twlp_custom_sip_tai
Nom du fichier : twlp_custom_sip_tai.html