La sécurité des webservices REST

Ce billet fait suite à celui intitulé "Exemple de webservice rest avec jersey". En fait, la procédure montrée ici est valable pour tous les webservices. Elle n'est pas propre à ceux qui utilisent l'API Jersey.

La première chose à prendre en compte pour la sécurité est d'utiliser HTTPS pour crypter les communications de bout en bout.

Exemple de Webservice Rest avec Jersey

Nous allons ici développer un webservice REST avec l'api Jersey. Le serveur est Tomcat. Le service proposé est de fournir simplement une citation. Le but est de montrer les éléments nécessaires pour faire un webservice rest avec Jersey.

Web Service REST

REpresentational State Transfer.

REST est un style d'architecture de services web qui utilise les standards Web déjà très utilisés (plus spécifiquement HTTP). Cependant REST il peut s'appliquer à d'autres médias que le WEB.
REST n'utilise pas SOAP, WSDL ou UDDI, et parfois même pas XML. Mais il utilise des conventions inspirés de HTTP.

La sécurité des Web Services SOAP

Il y a deux types de besoins de sécurité.
  • Les besoins liés aux spécifications de l'application et au niveau de sensibilité du ou des services exposés. On parle ici de sécurité fonctionnelle.
  • Les besoins liés aux technologies employées, à leur degré de vulnérabilité face aux menaces. On parle ici de sécurité technique.

Web Service - Top-down et Bottom-up développement

Le développement top-down consiste à créer un fichier WSDL, puis la création du service Web à l'aide du fichier WSDL. Avec cette approche, on conçoit d'abord l'implémentation du service web que l'on défini dans un fichier WSDL. Ensuite, on créé le squelette des classes java à partir du WSDL, et on y ajoute le code nécessaire.

Avec l'approche bottom-up, on créé d'abord les classes du service web, ensuite on créé le fichier WSDL à partir ce ces classes.

WSDL

Le WSDL (Web Services Description Language) est une grammaire XML permettant de décrire un Web Service. C'est un fichier que l'on pourrait comparer à une pièce d'identité, ou une interface Java, mais écrite en XML.
 Il sert à décrire :
  • le format de messages requis pour communiquer avec ce service
  • les méthodes que le client peut invoquer
  • la localisation du service
  • le protocole de communication (SOAP RPC ou SOAP orienté message)

Questions sur JSF

Sur quel Design Pattern s'appuit principalement JSF ?
  1. Factory
  2. MVC
  3. Oberserver
  4. Composite

Quel tag peut contenir d'autres tags ?
  1. <f:view>
  2. <h:jsf>
  3. <h:view>
  4. <f:faces>