Développement d'un intercepteur personnalisé pour les relations de confiance
Vous pouvez définir la méthode de la classe d'intercepteur à utiliser. WebSphere Application Server prend en charge deux interfaces d'intercepteur TAI (Trust Association Interceptor) : com.ibm.wsspi.security.TrustAssociationInterceptor et com.ibm.wsspi.security.tai.TrustAssociationInterceptor.
Avant de commencer
Procédure
- Définissez la méthode de la classe d'intercepteur. WebSphere
Application Server fournit l'interface
Java™ de l'intercepteur com.ibm.wsspi.security.TrustAssociationInterceptor,
qui définit les méthodes suivantes :
- public boolean isTargetInterceptor(HttpServletRequest req) creates WebTrustAssociationException;.
La méthode isTargetInterceptor détermine si la demande provient du serveur proxy associé à l'intercepteur. Le code d'implémentation doit examiner l'objet de demande entrante et déterminer si le serveur proxy qui réachemine la demande est valide pour cet intercepteur. C'est à l'examen du résultat de cette méthode que l'intercepteur décide de traiter ou non la demande.
- public void validateEstablishedTrust (HttpServletRequest req) creates WebTrustAssociationException;.
La méthode validateEstablishedTrust détermine si le serveur proxy dont émane la demande est digne de confiance. Cette méthode est appelée après la méthode isTargetInterceptor. Le code d'implémentation doit authentifier le serveur proxy. Le mécanisme d'authentification est propre au serveur proxy. Par exemple, dans l'implémentation du produit pour le serveur WebSEAL, cette méthode extrait les informations d'authentification élémentaires de l'en-tête HTTP et valide les informations en les comparant au registre utilisateur utilisé par WebSphere Application Server. Si les données d'identification ne sont pas valides, le code crée WebTrustAssociationException, en indiquant que le serveur proxy n'est pas digne de confiance et que la demande doit être refusée.
- public String getAuthenticatedUsername(HttpServletRequest req) creates WebTrustAssociationException;.
La méthode getAuthenticatedUsername est appelée une fois la relation de confiance établie entre le serveur proxy et WebSphere Application Server. Le produit a accepté l'authentification du serveur proxy pour la demande et doit maintenant autoriser la demande. Pour autoriser la demande, le nom du demandeur initial doit être soumis à des règles d'autorisation afin de déterminer si celui-ci dispose des droits nécessaires. Le code d'implémentation pour cette méthode doit extraire le nom d'utilisateur de l'en-tête de demande HTTP et déterminer si l'utilisateur possède des droits sur la ressource demandée. Par exemple, dans l'implémentation du produit pour le serveur WebSEAL, la méthode recherche un attribut iv-user dans l'en-tête de demande HTTP et extrait l'ID utilisateur associé pour l'autorisation.
- public boolean isTargetInterceptor(HttpServletRequest req) creates WebTrustAssociationException;.
- Configuration de l'intercepteur. Pour qu'un intercepteur puisse être configuré, l'intercepteur doit étendre com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor.
Implémentez les méthodes suivantes :
- public int init (java.util.Properties props);
- La méthode init(Properties) accepte l'objet java.util.Properties, qui contient l'ensemble des propriétés nécessaires à l'initialisation de l'intercepteur.
Toutes les propriétés définies pour un intercepteur (à l'aide du lien Propriétés personnalisées pour cet intercepteur ou à l'aide de scripts) sont envoyées à cette méthode. L'intercepteur peut alors utiliser ces propriétés pour s'initialiser. Par exemple, dans l'implémentation du produit pour le serveur WebSEAL, cette méthode lit les hôtes et les ports afin de pouvoir vérifier que les demandes entrantes proviennent d'hôtes et de ports sécurisés. Si la valeur renvoyée est zéro (0), l'initialisation de l'intercepteur a abouti.
Toute autre valeur indique que l'initialisation n'a pas abouti et que l'intercepteur n'est pas utilisé.
Applicabilité de la liste ci-dessous
Si une implémentation antérieure de l'intercepteur TAI renvoie un autre état d'erreur, vous pouvez modifier votre implémentation afin de vous conformer aux attentes ou apporter l'une des modifications suivantes :- Ajoutez la propriété com.ibm.wsspi.security.trustassociation.initStatus dans les propriétés personnalisées d'intercepteur de relations de confiance. Affectez à cette propriété la valeur qui signale que l'initialisation de l'intercepteur a abouti. Toutes les autres valeurs possibles impliquent un échec. En cas d'échec, l'intercepteur de relations de confiance correspondant n'est pas utilisé.
- Ajoutez la propriété com.ibm.wsspi.security.trustassociation.ignoreInitStatus dans les propriétés personnalisées d'intercepteur de relations de confiance. Réglez la valeur de cette propriété sur vrai : ainsi, WebSphere Application Server passe outre à l'état de cette méthode. Si vous ajoutez cette propriété aux propriétés personnalisées, WebSphere Application Server ne vérifie pas l'état de retour, un comportement similaire aux versions antérieures de WebSphere Application Server.
- public void cleanup ();
- Cette méthode est appelée lorsque le serveur d'applications est arrêté. Elle est utilisée pour préparer l'intercepteur pour l'expiration.
- public void setVersion (String s);
- Cette méthode est facultative. Elle est utilisée pour définir la version et pour information uniquement. La valeur par défaut est Unspecified.
Vous devez configurer les méthodes ci-dessous implémentées par l'implémentation de l'intercepteur personnalisée. Cette liste n'affiche que les méthodes et n'inclut pas d'implémentation.******************************************************************** 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 { //Renvoie la valeur true s'il s'agit de l'intercepteur cible, autrement renvoie la valeur false. } public TAIResult negotiateValidateandEstablishTrust (HttpServletRequest req, HttpServletResponse res) throws WebTrustAssociationFailedException { //valide la demande et établit la confiance. //crée et renvoie le résultat TAI public int initialize(Properties props) { //Initialise l'implémentation. Si elle aboutit, renvoie 0. Autrement, renvoie 1. } public String getVersion() { //Version du retour } public String getType() { //Type de retour } public void cleanup () { //Code de nettoyage. } }
Remarque : Si la méthode init(Properties) est implémentée selon les indications précédentes dans l'intercepteur personnalisé, cette remarque ne s'applique pas à votre implémentation et vous pouvez passer à l'étape suivante. Les versions précédentes de com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor incluent la méthode publique int init (String propsfile). Cette méthode n'est plus nécessaire car les propriétés de l'intercepteur ne sont pas lues à partir d'un fichier. Les propriétés sont maintenant saisies dans le lien Propriétés personnalisées de la console d'administration de l'intercepteur à l'aide de la console d'administration ou de scripts. Ces propriétés sont alors mises à disposition pour l'implémentation dans la méthode init(Properties). Cependant, pour des raisons de compatibilité ascendante, la méthode init(String) est toujours prise en charge. La méthode init(String) est appelée par l'implémentation par défaut de la méthode init(Properties), selon les indications dans l'exemple qui suit.// Implémentation par défaut de la méthode init (Properties props). Une implémentation //personnalisée doit remplacer celle-ci. 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; } }
Modifiez votre implémentation afin d'implémenter la méthode init(Properties) au lieu d'utiliser la méthode init(String propsfile). Selon les indications dans l'exemple précédent, cette implémentation par défaut lit les propriétés pour charger le fichier de propriétés. La propriété com.ibm.wsspi.security.trustassociation.types extrait le fichier contenant les propriétés en concaténant .config avec sa valeur.
Remarque : La méthode init(String) fonctionne toujours si vous voulez l'utiliser à la place de l'implémentation de la méthode init(Properties). Vous devez seulement indiquer le nom de fichier contenant les propriétés de relations de confiance personnalisées à l'aide du lien Propriétés personnalisées de l'intercepteur dans la console d'administration ou à l'aide de scripts. Vous pouvez entrer la propriété à l'aide de l'une ou l'autre des méthodes ci-après. La première méthode permet la compatibilité avec les versions antérieures de WebSphere Application Server.- Méthode 1 :
- Les mêmes noms de propriété utilisés dans la version précédente permettent d'obtenir le nom de fichier. Le nom de fichier est obtenu via la concaténation de .config à la valeur de la propriété com.ibm.wsspi.security.trustassociation.types.
Si le nom du fichier est myTAI.properties et qu'il se trouve dans le répertoire racine_serveur_app/properties, définissez les propriétés suivantes :
- com.ibm.wsspi.security.trustassociation.types = myTAItype
- com.ibm.wsspi.security.trustassociation.myTAItype.config = racine_serveur_app/properties/myTAI.properties
Si le nom du fichier est myTAI.properties et qu'il se trouve dans le répertoire /properties, définissez les propriétés suivantes :
- com.ibm.wsspi.security.trustassociation.types = myTAItype
- com.ibm.wsspi.security.trustassociation.myTAItype.config = racine_serveur_app/myTAI.properties
- Méthode 2 :
- Dans les propriétés personnalisées de relations de confiance, vous pouvez définir la
propriété com.ibm.wsspi.security.trustassociation.initPropsFile sur l'emplacement du
fichier. Par
exemple, définissez la propriété suivante :
com.ibm.wsspi.security.trustassociation.initPropsFile= racine_serveur_app/properties/myTAI.properties
com.ibm.wsspi.security.trustassociation.initPropsFile= racine_serveur_app/myTAI.properties
Entrez le code précédent sur une seule ligne.
L'emplacement du fichier de propriétés est un chemin complet qualifié (par exemple, racine_serveur_app/properties/myTAI.properties). Dans la mesure où l'emplacement peut être différent dans un environnement WebSphere Application Server, Network Deployment, utilisez des variables comme ${USER_INSTALL_ROOT} pour désigner le répertoire d'installation de WebSphere Application Server. Par exemple, si le nom du fichier est myTAI.properties et qu'il se trouve dans le répertoire racine_serveur_app/properties, définissez les propriétés suivantes :
L'emplacement du fichier de propriétés est un chemin complet qualifié (par exemple, racine_serveur_app/myTAI.properties). Dans la mesure où l'emplacement peut être différent dans un environnement WebSphere Application Server, Network Deployment, utilisez des variables comme ${USER_INSTALL_ROOT} pour désigner le répertoire d'installation de WebSphere Application Server. Par exemple, si le nom du fichier est myTAI.properties et qu'il se trouve dans le répertoire /properties, définissez les propriétés suivantes :
- 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 = racine_serveur_app/myTAI.properties
- Compilez l'implémentation une fois que vous l'avez implémentée.
Par exemple racine_serveur_app/java/bin/javac
-classpath racine_install/plugins/com.ibm.ws.runtime.jar;<racine_install>/dev/JavaEE/j2ee.jar
myTAIImpl.java
Identifiez le fichier de classe d'intercepteur de relations de confiance pour l'utiliser lors du démarrage du serveur. Placez le fichier dans le répertoire theapp_server_root/classes OU utilisez la propriété système JVM (Java Virtual Machine) -Dws.ext.dirs pour définir l'emplacement du fichier.
Copiez les fichiers de classe des intercepteurs de relations de confiance personnalisés dans un répertoire du chemin d'accès aux classes. Copiez ces fichiers de classes dans le répertoire racine_profil/classes.
Vous devez copier ce fichier de classes dans le répertoire racine_profil/classes de chaque noeud et de chaque cellule.
- Redémarrez tous les serveurs.
- 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 de classe.
- 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 init (Properties) de votre implémentation lorsqu'elle étend com.ibm.wsspi.security.WebSphereBaseTrustAssociationInterceptor selon les indications de l'étape précédente.
- Enregistrez la configuration et synchronisez-la (le cas échéant).
- Redémarrez les serveurs pour que l'intercepteur personnalisé entre en vigueur.
Exemple
Sous-rubriques
Prise en charge de la fonction d'intercepteur (Trust Association Interceptor) pour la création du sujet
L'interface TAI (Trust Association Interceptor), com.ibm.wsspi.security.tai.TrustAssociationInterceptor, prend en charge plusieurs fonctions et diffère de l'interface com.ibm.websphere.security.TrustAssociationInterceptor existante.


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