Sécurité en ingénierie du Logiciel

Le cadre des Web Services Partie 2 : Introduction HTTP

Alexandre Dulaunoy

adulau@foo.be

Agenda

• Introduction

• Fonctionnement HTTP

• Code de retour

• Structure des messages HTTP • Serveurs

• HTTP et Services Web

Introduction

HTTP - HyperText Transfert Protocol (RFC1945 / RFC2068) (Tim Berners-Lee fin 89 - début 90)

• Protocole de communication client/serveur (utilisant TCP/IP),

• Simple pour le récupération de documents (GET, HEAD),

• Simple pour la transmission de données (GET, POST),

• Standard et largement utilisé,

• Protocole utilisé par les Web Services,

• HTTP/1.0 à HTTP/1.1,

Fonctionnement

• Connexion du client vers le serveur,

• Demande d’un document via une méthode GET,

• Renvoi du document, erreur ou information sur le document,

• Déconnexion

La version HTTP/1.1 permet le KeepAlive (ç-à-d garder la communication maintenue). HTTP peut être encapsulé dans SSL/TLS.

Code de retour

• 1xx : Information

• 2xx : Succès

• 3xx : Redirection

• 4xx : Erreurs (p.ex. 404)

• 5xx : Erreurs venant du serveur HTTP

Méthodes

• GET (p.ex. récupération d’un document)

• GET ou POST (p.ex. soumission d’un formulaire)

• PUT, DELETE, LINK, UNLINK (p.ex. gestion d’un site -> WebDav)

• HEAD (p.ex. récupération d’informations sur un document)

Structure HTTP - Client

GET /img/logos/logo_univ.gif HTTP/1.1 Host: www.mim.univ-metz.fr User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5b) Gecko/20030827 Accept: image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://www.mim.univ-metz.fr/

Structure HTTP - Serveur

HTTP/1.0 200 OK Date: Thu, 02 Oct 2003 21:29:36 GMT Server: Apache-AdvancedExtranetServer/1.3.22 (Mandrake Linux/10.1mdk) mod_perl/1.26 Last-Modified: Tue, 11 Mar 2003 13:55:05 GMT ETag: "48ca-3d0-3e6deab9" Accept-Ranges: bytes Content-Length: 976 Content-Type: image/gif

GIF89a....

Structure HTTP

• POST avec upload de fichiers (Multipart) RFC1867,

• Plusieurs parties dans la requête,

• Le serveur peut répondre en multipart,

• Type mime.

Serveurs HTTP

• NCSA HTTP Serveur (mort),

• Apache (A Patchy Server sur NCSA),

• Jetty (Java),

• IIS (WIN32),

• Sun ONE HTTP Server,

• ...

HTTP et Services Web

HTTP est le transport de prédilection pour les services Web.

POST /StockQuote HTTP/1.1 Host: www.stockquoteserver.com Content-Type: text/xml; charset="utf-8" Content-Length: nnnn SOAPAction: "Some-URI"

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"> <SOAP-ENV:Body>

<m:GetLastTradePrice xmlns:m="Some-URI">

<symbol>DIS</symbol> </m:GetLastTradePrice>

</SOAP-ENV:Body> </SOAP-ENV:Envelope>

Q&R

• adulau@foo.be

• http://www.foo.be/cours/securite-webservices/

• 3B12 DCC2 82FA 2931 2F5B 709A 09E2 CD49 44E6 CBCD