Développement d'un intercepteur TAI personnalisé

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

Avant de commencer

Vous pouvez vous familiariser avec les informations générales se rapportant aux intercepteurs TAI dans la document Relations de confiance. 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 TAI pour une application SIP est une extension du modèle d'intercepteur TAI. Pour plus d'informations, voir Développement d'un intercepteur TAI personnalisé.

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 étend la classe com.ibm.wsspi.security.tai.BaseTrustAssociationInterceptor et implémente l'interface com.ibm.websphere.security.tai.SIPTrustAssociationInterceptor. Ces classes sont définies dans le fichier WASProductDir/plugins/com.ibm.ws.sip.container_1.0.0.jar, où WASProductDir est le nom de chemin complet qualifié du répertoire d'installation de WebSphere Application Server.
  2. Déclarez les méthodes Java suivantes :
    public int initialize(Properties properties) throws WebTrustAssociationFailedException;
    Cette méthode est appelée avant que le premier message soit traité afin que l'implémentation puisse allouer les ressources nécessaires. Par exemple, elle peut établir une connexion à une base de données. WebTrustAssociationFailedException est défini dans le fichier WASProductDir/plugins/com.ibm.ws.runtime_1.0.0.jar. La valeur de l'argument properties provient des propriétés personnalisées définies dans cette étape.
    public void cleanup();
    Cette méthode est appelée lorsque l'intercepteur TAI doit libérer les ressources qu'il contient. Par exemple, il peut mettre fin à une connexion à une base de données.
    public boolean isTargetProtocolInterceptor(SipServletMessage sipMsg) throws WebTrustAssociationFailedException;
    L'intercepteur TAI personnalisé doit utiliser cette méthode pour traiter 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 une valeur TAIResult, qui indique le statut du message en cours de traitement, ainsi qu'un ID utilisateur ou un ID unique pour l'utilisateur qui essaie de s'authentifier. Si l'authentification réussit, TAIResult doit indiquer le statut HttpServletResponse.SC_OK et un principal. Si l'authentification échoue, TAIResult doit contenir le code retour HttpServletResponse.SC_UNAUTHORIZED (401), SC_FORBIDDEN (403) ou SC_PROXY_AUTHENTICATION_REQUIRED (407). Cela indique seulement si le conteneur doit accepter un message pour un traitement plus approfondi. Pour tester une demande entrante, l'intercepteur TAI doit générer et envoyer sa propre réponse SipServletResponse contenant un test. L'exception doit être émise pour les erreurs internes de l'intercepteur TAI. Tableau 1 décrit les valeurs des arguments et les actions qui en résultent pour la méthode negotiateValidateandEstablishProtocolTrust.
    Tableau 1. Description des arguments et des actions de negotiateValidateandEstablishProtocolTrust.

    Ce tableau fournit une description des arguments et des actions de negotiateValidateandEstablishProtocolTrust

    Argument ou action Pour une demande SIP Pour une réponse SIP
    Valeur de l'argument req La demande entrante Null
    Valeur de l'argument resp Null La réponse entrante
    Action pour les données d'identification de réponse valides Renvoie TAIResult.status containing SC_OK et un ID utilisateur/ID unique Renvoie TAIResult.status containing SC_OK et un ID utilisateur/ID unique
    Action pour les données d'identification incorrectes Renvoie TAIResult avec le statut 4xx Renvoie TAIResult avec le statut 4xx
    La séquence d'événements est la suivante :
    1. Le conteneur SIP mappe les demandes initiales vers les applications à l'aide des règles de chaque descripteur de déploiement d'applications. Les messages suivants sont mappés en fonction des mécanismes JSR 116.
    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, définie dans le fichier WASProductDir/plugins/com.ibm.ws.runtime_1.0.0.jar, possède trois méthodes statiques pour créer TAIResult. Les méthodes create de TAIResult utilisent un entier comme premier paramètre. WebSphere Application Server attend que le résultat soit un code retour de demande HTTP valide, qui est interprété de la manière suivante :

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

    Les significations de la valeur TAIResults créée sont indiquées dans Tableau 2.

    Tableau 2. Signification de la valeur TAIResults.

    Le tableau ci-après répertorie les significations des valeurs TAIResult

    TAIResult Explications
    public static TAIResult create(int status); Indique un état à WebSphere Application Server. Le statut ne doit pas être SC_OK car les informations d'identité sont fournies.
    public static TAIResult create(int status, String principal); Indique un état à WebSphere Application Server et fournit l'ID utilisateur ou l'ID unique pour cet utilisateur. WebSphere Application Server crée les justificatifs en interrogeant le registre d'utilisateurs.
    public static TAIResult create(int status, String principal, Subject subject); Indique un état à WebSphere Application Server, l'ID utilisateur ou l'ID unique pour l'utilisateur, et 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 que vous l'avez implémentée. Par exemple : /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. Pour chaque serveur d'un cluster, copiez le fichier de classes à un emplacement du chemin d'accès aux classes WebSphere (de préférence dans le répertoire WASProductDir/plugin/).
    2. Redémarrez tous les serveurs.
  4. Supprimez l'intercepteur WebSEAL par défaut dans la console d'administration et cliquez sur Nouveau pour ajouter l'intercepteur personnalisé. Vérifiez que le nom de classe est séparé par des points et qu'il se trouve dans le chemin d'accès aux classes.
  5. Cliquez sur le lien Propriétés personnalisées pour ajouter des propriétés supplémentaires nécessaires à l'initialisation de l'intercepteur personnalisé. Ces propriétés sont transmises à la méthode initialize(Properties properties) de l'implémentation, lorsqu'elle étend l'élément com.ibm.websphere.security.WebSphereBaseTrustAssociationInterceptor décrit à l'étape précédente.
  6. Enregistrez la configuration et synchronisez-la (le cas échéant).
  7. Redémarrez les serveurs pour que l'intercepteur personnalisé entre en vigueur.

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



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