Gestion de l'authentification d'un service web via WS-SECURITY
Problème
Comment gérer l'authentification d'un service web via WS-SECURITY avec Adélia Studio ?
Solution
l'authentification WS-SECURITY ne repose pas sur l'authentification HTTP classique par le container web. L'authentification se fait par un échange d'informations via la section <header> du message SOAP.
Pour assurer une authentification du service via un header WS-SECURITY, il existe à ce jour 2 possibilités :
Première possibilité
Création manuelle du header "ws-security" pour l'authentification (via la directive *ENTETE_MSG_MEM ou *ENTETE_MSG_FILE de l'ordre SW_APPELER) [solution la plus simple]
L'en-tête à ajouter est le suivant :
<wsse:UsernameToken wsu:Id="UsernameToken" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Username>user</wsse:Username>
<wsse:Password>password</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
Par défaut, le password est du plain text (correspond au type PasswordText). Si le type doit être absolument renseigné, alors il faut écrire :
Pour un password de type DIGEST :
<wsse:Nonce>ksSedFljK</wsse:Nonce>
<wsu:Created>2013-09-13T15:34:43.000Z</wsu:Created>
Deuxième possibilité
Génération automatique du header WS-SECURITY avec une configuration du module RAMPART [solution plus compliquée à mettre en oeuvre; nécessite l'écriture en C d'une DLL spécifique].
La solution ci-dessous est non exhaustive mais indique la marche à suivre.
a. Déclarer, dans le fichier CfgWebServices.xml le module "rampart" avec une référence à un fichier "client-policy.xml" contenant la définition des éléments de sécurité :
<Name>rampart</Name>
<Description>
<PolicyFile>client-policy.xml</PolicyFile>
</Description>
</Module>
</service>
b. Ecriture du fichier client-policy.xml en question. Le clent-policy.xml devrait s'inspirer/se calquer à celui utiliser par le serveur.
Exemple dans le cas ou la police de sécurité semble requérir uniquement un userToken (user/password avec un mot de passe non chiffré).
c. Ecrire la DLL (ou classe) référencée dans le fichier client-policy.xml (cf. élément PasswordCallbackClass) et la déployer dans le dossier ad-hoc.
Cette DLL/Classe assure la gestion des mots de passe et s'appuie sur une interface RAMPART.
Exemples :
Références
http://j2eesolution.blogspot.fr/2013/02/axis-2-username-token-authentication.html
http://axis.apache.org/axis2/java/rampart/
http://axis.apache.org/axis2/c/rampart/
https://www.oasis-open.org/committees/download.php/13392/wss-v1.1-spec-pr-UsernameTokenProfile-01.htm
Articles connexes
Les articles connexes apparaissent ici en fonction des étiquettes que vous avez sélectionnées. Cliquez pour modifier la macro et ajouter ou modifier des étiquettes.