La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

- Formation Web Services

Présentations similaires


Présentation au sujet: "- Formation Web Services"— Transcription de la présentation:

1 www.objis.com - Formation Web Services
1 1

2 A propos d’Objis… Centre de formation Java/J2ee depuis 2005
Paris – Lyon - Dakar 70% de pratique Tutoriaux en libre accès sur 1000 visiteurs quotidiens venus de 100 pays Cursus développeur / Architecte / Chef de projet Nouveauté 2011 : sécurité & performance - Formation Web Services - Formation SPRING 2

3 8 fondamentaux et 7 bonnes pratiques WS
Fondamentaux : SOA, WS, standards et interropérabilité Fondamentaux : web services SOAP avec Java 6 Fondamentaux : valeur ajoutée specs WS-* Fondamentaux : méthodologies Développement WS Fondamentaux : différence WS SOAP 'Rpc' et 'Document' Fondamentaux : architecture & approche REST Fondamentaux : critère choix WS 'lourd'/soap ou 'léger'/rest Fondamentaux : stratégies sécurité WS Bonne pratique : validation conformité de votre web service Bonne pratique : lecture / compréhension WSDL Bonne pratique : dévelopement. WS 'Document' Bonne pratique : création intercepteurs (Handlers) Bonne pratique : productivité dev/design WS avec IDE Bonne pratique : méthodologie dev web service top-down Bonne pratique : implément. specs WS-* via frameworks - Formation Web Services - Formation SPRING 3

4 Objectifs de la formation WS Objis
1) Comprendre bénéfices, challenges, standards WS 2) Comprendre la relation entre WS et archi. SOA 3) Comprendre dev web services avec Java / Jee 4) Identifier fondamentaux & bonnes pratiques WS - Formation Web Services - Formation SPRING 4

5 Sommaire Partie 1 : introduction Web Services / SOA (p. 6)
Partie 2 : lecture WSDL (p. 39) Partie 3 : développement WS 'lourd' SOAP (p. 54) Partie 4 : développement WS 'léger' REST (p. 79) Partie 5 : comparaison WS SOAP / REST (p. 86) Partie 6 : Sécurité WS (p. 89) - Formation Web Services - Formation SPRING 5

6 Partie 1 : Introduction Web Services
Historique et positionnement Web services / SOA Architecture SOA : les 5 caractéristiques clés Architecture Web services Web service et Java : Java 6 et le monde JAX-WS Interropérabilité : les spécifications WS-* Conformité WS-I : choix de frameworks dev Java WS Conformité WS-I : outils 'Monitor' et 'Analyzer' - Formation Web Services - Formation SPRING 6

7 Relation Web Services / SOA
Jusqu'où la DSI met en oeuvre SOA ? Voir Formation SOA 2) Transactions 3) Qualité service 1) Sécurité Rôle archi. WS Rôle dev. - Formation Web Services - Formation SPRING 7

8 Environnement SOA ESB www.objis.com - Formation Web Services
Services de présentation ESB Processus métiers orchestrée Adaptateurs Service Service Service Services composites R o u t a g e T r a n s f o m t i M e s s a g e s Services bas niveau Systèmes métiers ERP CRM SCM Portail - Formation Web Services - Formation SPRING 8

9 SOA : 5 caractéristiques clés
Contrat de service Transparence du service Granularité du service Composition du service Annuaire de service - Formation Web Services - Formation SPRING 9

10 Caractéristique SOA N°1 : interface / contrat de service
Quelles opérations disponibles entre le client et le service ? Quelles données en paramètres ?Comment solliciter le service ? Solution : WSDL + XSD : description format message XML pour chaque opération WSDL 1.1 complexe Ports ? Bindings ? WSDL 2.0 plus simple Courbe apprentissage plus réduite WS-Adressing - Formation Web Services - Formation SPRING 10

11 interface / contrat de service
Caractéristique SOA : interface / contrat de service Service(s) XSD 1 Opération XSD Message In/Out XSD 2 Opération XSD Message In/Out - Formation Web Services - Formation SPRING 11

12 Caractéristique SOA N° 2:
Transparence Appeler un service sans avoir besoin de connaître son emplacement physique sur le réseau Solution : WS-Adressing Définir dans le message le endpoint / l'action pour un Web Service basé sur Soap Notion de 'destination logique' - Formation Web Services - Formation SPRING 12

13 Caractéristique SOA N° 2:
Transparence ? - Formation Web Services - Formation SPRING 13

14 Caractéristique SOA N° 2:
Transparence - Formation Web Services - Formation SPRING 14

15 Caractéristique SOA N° 2:
Transparence - Formation Web Services - Formation SPRING 15

16 Caractéristique SOA N° 3:
Granularité et état Ex : besoin d'un service web qui ajoute un utilisateur dans le CRM du SI Solution 1 : Un seul 'gros' service AjouterClient (OrganisationId) → id spécifique CRM PB : limite réutilisabilité du service par autres clients Solution 2 : plusieurs petits' services RechercherOrganisationIdClient(Client) AjouterAdresseClient() Maximiser la réutilisabilité ! La gestion de l'état ajoute de la complexité Ex service nécessitant validation (id en session ?) - Formation Web Services - Formation SPRING 16

17 Caractéristique SOA N°4 : Composition de services
Maximiser la création de services composites 1 service = Ensemble d'autres services Solution : norme BPEL : orchestration de services - Formation Web Services - Formation SPRING 17

18 Caractéristique SOA N°5 : Annuaire & publication
Aujourd'hui peu d'entreprises utilisent UDDI Peu d'annuaires publics (essais de SAP,IBM..) La 'découverte automatique' se heurte au business Réalité : besoin de contrats commerciaux ! En pratique : Pour web services SOAP, un WSDL clair suffit pour lister les services et opérations disponibles Annuaire interne Ex : Juddi - Formation Web Services - Formation SPRING 18

19 Les technologies d'une plate forme SOA
Votre web services - Formation Web Services - Formation SPRING 19

20 Architecture SI et place Web services autour du bus ESB
- Formation Web Services - Formation SPRING 20

21 Rôles projet SOA www.objis.com - Formation Web Services
- Formation SPRING 21

22 Orchestration avec BPEL
- Formation Web Services - Formation SPRING 22

23 Apparition web services et SOA :
contexte métier Besoin : mettre le système d'information (SI) de l'entreprise au service du business !! AVANT : SI = ensemble d'applications Gestion relation client (CRM) Gestion flux logistique (SCM) Progiciel de gestion entreprise (ERP) Gestion processus métiers (BPM) Entrepot de données (Datawarehouse) ... DEMAIN : SI = ensemble de services Web service : bras armé de SOA ! - Formation Web Services - Formation SPRING 23

24 Apparition Web Services :
contexte technique CORBA , EJB et DCOM basés sur RPC Pb : Couplage fort EJB et DCOM liés à une plateforme Pb : manque d'intéropérabilité CORBA EJB complexe CORBA nécessite IDL EJB nécessit(ait) XML complexe 2003+ : nouveaux standards ouverts XML / Web Services WSDL / SOAP / UDDI JAX-RPC / JAX-WS - Formation Web Services - Formation SPRING 24

25 Web Services : les standards ouverts
WSDL (Web Service Description Language) est le format XML décrivant le endpoint. UDDI (Universal Description, Discovery and Integration) est un annuaire de publication des services web. SOAP (Simple Object Access Protocol) permet un échange de données entre systèmes hétérogènes. SOAP : 2 approches Approche RPC (Synchrone, échange types primitifs) Approche Document (Asynchrone, échange Objets) Permet couplage faible ! Clé architecture SOA. - Formation Web Services - Formation SPRING 25

26 Architecture Web Services
Application cliente Requête EndPoint Réponse Web Method Web Method Récupère métadonnées WSDL EndPoint Recherche WSDLs défini Web Method Localise Web Method UDDI - Formation Web Services - Formation SPRING 26

27 Standards Web services :
Le monde de JAX-WS Java SE 6 JAXB utilise Transformation JAVA / XML inclus JAX-WS SOAP XML Fournit API haut niveau pour Représenté par basé sur définit WSDL manipule JAX-P SCHEMA SAAJ Annuaire pour MTOM UDDI JAX-R Fournit clients pour accéder Fournit API bas niveau pour - Formation Web Services - Formation SPRING 27

28 Standards Web services
JSR 224 : JAX-WS (API haut niveau pour WS) JSR 181 : métadonnées (annotations) JSR 109 : Modèle prog. Web Services JEE JSR 67 : SAAJ (API bas niveau créer/manipuler WS) - Formation Web Services - Formation SPRING

29 Standards Web services
et API Java 6 javax.jws javax.jws.soap Métadonnées (annotations facilitant dév. javax.xml.soap SAAJ (API bas niveau créer/manipuler Message : En-tête, corps, Attachements...) → SOAPHeader, SOAPBody, SOAPFault... javax.xml.ws javax.xml.ws.handler javax.xml.ws.handler.soap javax.xml.ws.http javax.xml.ws.soap javax.xml.ws.spi javax.xml.ws.wsaddressing JAX-WS (API haut niveau pour WS) → EndPoint, Service, - Formation Web Services - Formation SPRING

30 Standards Web services :
Le monde WS-* - Formation Web Services - Formation SPRING 30

31 Frameworks Web services : Implémentation specs WS-*
Source : - Formation Web Services - Formation SPRING 31

32 Choix framework Apache CXF
Apache CXF est le fruit de la fusion entre Apache Celtix et Apache XFire , d’où le nom CXF. Celtix était un Bus de service (ESB) Java sponsorisé par IONA et développé par le consortioum ObjectWeb. XFire était un framework de développement de services web basé sur SOAP. Les points communs étaient nombreux et les développeurs des 2 communautés ont décidé de travailler ensemble pour offir le meilleur des deux mondes. - Formation Web Services - Formation SPRING 32

33 Choix framework Apache CXF
Choix naturel pour développeurs Spring Support des standards WS-* : WS-Basic Profile, WS- Addressing, WS-Policy, WS-ReliableMessaging, WS-Security. Support de JAX-WS (inclus JAXB et SAAJ) Support de SOAP, WSDL, MTOM Support Style REST (Spec JAX-RS) Facilité d’utilisation : développement basé sur POJO annotés Nombreux outils voir ci-dessous répertoire bin Nombreux formats transport : Http(s), JMS, CXF Format données : XML, JSON Plusieurs stratégies binding XML : JAXB, Aegis Plusieurs stratégies de binding non-xml : json, corba, jbi, sca Déploiement flexible : serveurs J2ee , intégration sca (Tuscany) et jbi (service engine pour ServiceMix, OpenESB, Petals) - Formation Web Services - Formation SPRING 33

34 Choix Métro Implémentation de référence des specs JAX-WS
Support des standards WS-* : WS-Basic Profile, WS- Addressing, WS-Policy, WS-ReliableMessaging, WS-Security. Support de JAX-WS (inclus JAXB et SAAJ) Support de SOAP, WSDL, MTOM Facilité d’utilisation : développement basé sur POJO annotés - n'a pas autant d'outils RAD que CXF Nombreux formats transport : Http(s), JMS Ne gère pas REST + A privilégier pour interropérabilité avec WS .NET 3.5 - Formation Web Services - Formation SPRING 34

35 Interropérabilité Web Services
Consortium WS-I ( : promouvoir l'interropérabilité des services web à travers les plattes formes,OS, langages de programmation WS-I : plusieurs éditeurs dont Microsoft, IBM, Oracle Spécification WS-Basic Profile : recommandations contribuant à créer des services web interropérables Ex : Jee5 est compaticle WS-Basic Profile 1.1 Bonne pratique : testez la conformité de vos WS ! Outils : 'Monitor' et 'Analyzer' fournit par le WS-I - Formation SPRING

36 Interropérabilité Web Services :
Test conformité Etape 1 : Monitor.bat produit fichier de traces C/S (log.xml) Etape 2 : Analyzer.bat Analyse le fichier de traces produit rapport conformité (report.xml) - Formation Web Services - Formation SPRING

37 Interropérabilité Web Services : Exemple résultat outil 'Monitor'
- Formation Web Services - Formation SPRING

38 Interropérabilité Web Services : Exemple résultat outil 'Analyzer'
- Formation Web Services - Formation SPRING

39 Partie 2 : lecture WSDL Les 5 sections clés Section 'types'
Section 'message' Section 'portType' Section 'bindings' Section 'services' - Formation Web Services - Formation SPRING 39

40 Anatomie WSDL : 5 sections clés
1 : types 2 : message 3 : porType 4 : binding 5 : service - Formation Web Services - Formation SPRING 40

41 Anatomie WSDL : 5 sections clés
- Formation Web Services - Formation SPRING 41

42 Bonne pratique lecture sections WSDL
Commencer par lire section 'du milieu' : portType pour identifier rapidement le savoir-faire (opérations) du WS Au dessus de la section 'portType' : infos abstraites Section 'types' : typage paramètres entrées/sorties Section 'messages' : messages SOAP Aller / Retour En dessous de 'portType' : infos 'concrètes' Section 'bindings : différents canaux de transport (http,ftp,...) Section 'service'' : lieu physique ou le service est accessible - Formation Web Services - Formation SPRING

43 Section clé WSDL N°1 : 'types'
Types de données utilisés par le WS Si WS Rpc : vide (Types simples : chaine, int...) Si WS Document : inclus, pointe vers ou importe XSD - Formation Web Services - Formation SPRING

44 Section clé WSDL N°1 : 'types' Exemple 1 (WS Document types simple)
- Formation Web Services - Formation SPRING

45 Section clé WSDL N°1 : 'types' Exemple 2 (WS Doc. types complexes)
- Formation Web Services - Formation SPRING

46 Section clé WSDL N°1 : 'types' Exemple 2 (WS Doc. types complexes)
4 3 - Formation Web Services - Formation SPRING

47 Impact style 'Rpc' ou 'Document' du WS sur section <types>
Style 'Rpc' : historiquement le plus utilisé (int/string) Style 'Document' : permet de décrire la structure du message via fichier xsd externe. Plus souple ! Info : Style 'Document' par défaut - Formation Web Services - Formation SPRING

48 Section clé WSDL N°2 : 'message'
Messages SOAP utilisés par le WS Construits à partir des types données section 'types' Remarque : ordre messages indique pattern service - Formation Web Services - Formation SPRING

49 Section clé WSDL N°3 : 'porType'
Décrit les opérations , le 'savoir-faire' du WS Equivalent strict de l'interface Java du service Opérations identifiées code WS - Formation Web Services - Formation SPRING

50 Section clé WSDL N°3 : 'portType'
Pattern de service - Formation Web Services - Formation SPRING

51 Section clé WSDL N°4 : 'bindings'
Section la plus 'concrète' et la plus 'complexe' Info clé 1 : Protocole transport à utiliser pour envoi / réception msg SOAP Info clé 2 : le Style : 'rpc' ou 'document' Specs : par défaut 'document' Info clé 3 : le format de données : 'litteral' ou 'encoded' Specs : par défaut 'litteral' Attention : 'encoded' non respect Basic profile ! - Formation Web Services - Formation SPRING

52 Section clé WSDL N°4 : 'bindings'
1 2 3 - Formation Web Services - Formation SPRING

53 Section clé WSDL N°5 : 'service'
Spécifie 1 ou plusieurs Endpoints où les fonctionalités du WS sont disponibles Représente physiquement les 'ports' Port = interface (portType) + implémentation (binding) Analogie avec port réseau Ex : accès au service sur :8888 1 implémentation 1 interface - Formation Web Services - Formation SPRING

54 Partie 3 : méthodes développement WS
Approche 'bottom-up' et 'top-down' Avantages et inconvénients dev WS avec Java6 Valeur ajoutée serveurs, IDE, frameworks Méthode développementr WS SOAP 'Document' Création d'intercepteurs (Handlers) - Formation Web Services - Formation SPRING 54

55 Approches de développement WS
Bottom-up (ou 'code first') : Du code vers le WSDL Top-down (ou 'contract first') : du WSDL vers le code - Formation Web Services - Formation SPRING

56 Inconvénients Approche bottom-Up
Ne respecte pas la 'neutralité du langage' Orienté 'programmeur' et pas 'utilisateur' - Formation Web Services - Formation SPRING

57 Dev. Web services avec Java 6
JAX-WS inclus dans Java6 Création WS avec Pojo annoté (Métadonnées) Publication avec Endpoint.plublish() Mini serveur web intégré Inconvénient : monothread - Formation Web Services - Formation SPRING

58 Dev. Web services avec JEE
JAX-WS implémenté par serveur JEE Packaging WS sous forme de WAR ou EJB jar Génération automatique du WSDL Filtre disponible (via framework) Possibilité de sécuriser l'accès WS avec JAAS Multithread Intégration services Jee comme JMS, JCA, ... - Formation Web Services - Formation SPRING

59 WS avec types complexes
- Formation Web Services - Formation SPRING

60 WS avec types complexes Exemple classe accès données
- Formation Web Services - Formation SPRING

61 Bonnes pratiques WS types complexes : Outils wsgen et ws import
1)Compilation WS et javabeans : javac -d . *.java 2)Génération classes utilitaires pour le WS (création du répertoire jaxws) wsgen -cp . -keep com.objis.demowebservices.document.team.Teams 3)Publication du WS java -cp . com.objis.demowebservices.document.team.TeamsPublisher 4)Génération classes utilitaires pour le client (dans répertoire teamC): wsimport -p teamC -keep 5) Codage du Client TeamsClient (s'aider du TP client RPC ainsi que du code source de teamC.TeamsService) 6) Lancement du client java -cp . TeamsClient Avoir copie code source - Formation Web Services - Formation SPRING

62 WS avec types complexes
1)Compilation WS et javabeans : javac -d . *.java 2)Génération classes utilitaires pour le WS (création du répertoire jaxws) wsgen -cp . -keep com.objis.demowebservices.document.team.Teams - Formation Web Services - Formation SPRING

63 WS avec types complexes
3)Publication du WS 4) Génération classes utilitaires pour le client (dans répertoire teamC): wsimport -p teamC -keep → Utiliser le codede la classe TeamsService.java généré du service pour coder votre client → repérer méthodes xxxxPort - Formation Web Services - Formation SPRING

64 WS avec types complexes
- Formation Web Services - Formation SPRING

65 WS avec types complexes
5) Codage & compilation client TeamsClient (à partir du code source de teamC.TeamsService) Extrait code TeamsService généré coté client client - Formation Web Services - Formation SPRING

66 WS avec types complexes
6) Lancement du client : java -cp . TeamsClient - Formation SPRING

67 JAXB : de JAVA à XML Java API for XML Binding
Manipuler avec Java les données des messages XML Vous sauve de XML schéma, Sax, DOM ! Marshaling = transformation Java → XML - Formation Web Services - Formation SPRING

68 JAXB : de JAVA à XML www.objis.com - Formation Web Services
- Formation Web Services - Formation SPRING

69 Travailler avec JAXB en 2 étapes
Etape 1 : générer/compiler 'classes dérivées' à partir XML Schema Etape 2 : lancer votre appli pour unmarshaler / Marshaller INFO : étape de validation XML Optionnelle - Formation Web Services - Formation SPRING

70 XML Schema Permet de décrire la grammaire d'un doc. XML
+ précis que DTD : Types : decimal, date, fixed, string Contraintes : pattern value, minOccurs, positiveInteger Support des Namespaces Analogie avec type JAVA Point commun entre plusieurs langages Ex : langage C connait 1 et 0 mais pas 'boolean' Type xsd 'en commun' : xsd:boolean - Formation Web Services - Formation SPRING

71 Traitement à la volée de messages avec Handlers
Manipuler message coté client AVANT de l'envoyer Manipuler message coté serveur AVANT de le traiter Empécher un intermédiaire de valider (FAULT) Sécurité Logs Cache Transactions - Formation Web Services - Formation SPRING

72 Traitement à la volée de messages : exemple sécurité
- Formation Web Services - Formation SPRING

73 Etape 1 : créer Handler (1/2)
- Formation Web Services - Formation SPRING

74 Etape 1 : créer le Handler (2/2)
- Formation Web Services - Formation SPRING

75 Etape 2 : Configurer le handler dans un fichier XML
- Formation Web Services - Formation SPRING

76 Etape 3 : Associer le Handler au service avec @Handlers
- Formation Web Services - Formation SPRING

77 Etape 4 : Lancer le client
- Formation Web Services - Formation SPRING

78 Handler coté client : 2 méthodes (déclarative et programmative)
1) dans classe Service générée 2) ajout code dans classe client - Formation Web Services - Formation SPRING

79 Web Services 'léger' avec REST
Exemples Requêtes/Réponses WS REST Architecture WS style REST 4 étapes traitement requête Contraintes REST API JAX-RS REST avec Apache CXF - Formation Web Services - Formation SPRING 79

80 Exemples URL REST http://localhost:9000/categoryservice/category/001
- Formation Web Services - Formation SPRING 80

81 (REpresentational State Transfert)
Architecture REST (REpresentational State Transfert) 1) centré POJO 2) centré HTTP 3) indépendence format (XML/JSON) 4) indépendance conteneur 5) ok avec conteneur JEE - Formation Web Services - Formation SPRING 81

82 Bonne pratique traitement requête HTTP façon REST
Lorsqu'une requête HTTP arrive , 4 choses à faire : 1) Identifier la méthode HTTP (exemple : POST) 2) Convertir le message (body) du format spécifié (XML ou JSON) vers format serveur (Ex : JAVA) ) réaliser l'opération demander (Ex : POST -> écrire ) ) Convertir la réponse en flux HTTP au format demandé (ex : Accept : application/json) - Formation Web Services - Formation SPRING 82

83 Contrainte REST...et API JAX-RS
Contrainte : fournir implémentation pour toutes les méthodes HTTP : POST, GET, PUT, DELETE d'où le standard JAR-RS (Java Api for RestFull Web Services) : sémentique création WS façon REST Equivalent REST de WSDL : WADL Web Application Description Langage Pas encore officiel Frameworks 'Jersey' et 'Restlet' le génèrent - Formation Web Services - Formation SPRING 83

84 Dev REST avec CXF 1) Bonne intégration avec Spring
2) Plusieurs stratégies binding (JAXB, JSON, AEGIS, XMLBean) 3) API client (pas ds specs jax-rs) 4) Sécurité (Spring Security) 5) Filtres / Intercepteurs WS-* - Formation Web Services - Formation SPRING 84

85 Méthode dev appli REST et CXF
1) Créer objets Java de Requête et Réponse (Ex Category, Book) 2) Fournir Binding pour objet Requête et Réponse (Exemple JAXB audessus nom classe + @XmlElement pour personnaliser namespace) 3) Créer classes d'implémentation (CategoryService) & les annoter avec annotations @PathParam) 4) Test unitaires 5) Création de clients invoquant méthodes HTTP (via Proxy ou via objet cxf tout prêt : org.apache.cxf.jaxrs.client.WebClient) 6) Déployer le service dans conteneur (rendre le service accessible via HTTP. Ex sans besoin de serveur j2ee avec classe : org.apache.cxf.jaxrs.JAXRSServerFactoryBean ) - Formation Web Services - Formation SPRING 85

86 Comparaisons Web Services 'lourd' SOAP vs 'léger' REST
Avantages et inconvénient WS 'lourd' SOAP Avantages et inconvénient WS 'léger' REST - Formation Web Services - Formation SPRING

87 Web Services 'lourd' SOAP (pour scénario d'intégration complexe)
Spécification JAX-WS → Implémentation de référence : métro - Contrainte : messages format XML façon SOAP - Contrainte : interface décrite avec WSDL + Avantage : multi-protocoles : HTTP,FTP,SMTP, JMS - Architecture sous-jacente doit gérer nombreux besoins non fonctionnels : sécurité, transactions, transparence, coordination. Specs : WS-Security, WS-Adressing,... - Architecture sous-jacente doit gérer traitement asynchrone. Pbs potentiels de fiabilité ! Spec WSRM (Web Service Reliable Messaging) - Formation Web Services - Formation SPRING

88 Web Services 'léger' REST (pour scénario d'intégration simple)
Spécification JAX-RS (RestFull Services) → Implémentation de référence JavaEE6 : Jersey + Pas de contrainte format message XML, ni de contrainte description interface WSDL - Contrainte : protocole transport HTTP + Complémentaire d'Ajax pour écrans web + Bonne pratique : mettre en oeuvre cache requêtes HTTP (attention limite cache serveurs web sur GET) + Intérressant si le critère bande passante est primordial (trop de headers avec SOAP !) Ex : applications pour PDA - Formation Web Services - Formation SPRING

89 Sécurité Web Services Les risques du couplage faible
Stratégies de sécurité - Formation Web Services - Formation SPRING

90 Les risques du couplage faible
1) Les nouveaux standards de communications (XML, SOAP, WSDL, UDDI....) sont ouverts. 2) Les nouveaux standards de communications ont été développé sans une approche sécurité. 3) Si'ils sont utilisés 'tel quels', ils sont complètement non sécurisé ! Exemple : communication Usine / Agences AVANT : Interfaces propriétaires sécurité DEMAIN : services exposés via WS - Formation Web Services - Formation SPRING 90

91 Exemple B2B AVANT SOA : Communication par VPN
- Formation Web Services - Formation SPRING 91

92 Communication par Web Services
Exemple B2B AVEC SOA : Communication par Web Services - Formation Web Services - Formation SPRING 92

93 Bonnes pratiques : solutions Sécurité Web Services
1) Si WS = WAR (Pojo annoté) config. JAAS Authentification (BASIC, FORM, DIGEST, CERT) Autorisation DBRealm, LdapRealm... 2) HTTPS : Certificats, signature, Encryption XML Utiliser keytool (générer clés, certificat, Csr...) 3) Intercepteurs SOAP 'perso' (handlers) 4) Fédération d'identité (SAML / SSO) 5) Intercepteurs WS-Security (ajout infos headers) sécurité indép. Couche transport utilisée ! Ex CXF : - Formation Web Services - Formation SPRING 93

94 WS-Security : jetons de sécurité
(Security Token) 1 2 - Formation Web Services - Formation SPRING 94

95 Signature de message (début)
- Formation Web Services - Formation SPRING 95

96 Signature de message (fin)
- Formation Web Services - Formation SPRING 96

97 Service de jeton sécurisés
- Formation Web Services - Formation SPRING 97

98 Requete jeton sécurisés
- Formation Web Services - Formation SPRING 98

99 Réponse jeton sécurisés
- Formation Web Services - Formation SPRING 99

100 Bibliographie Web Services Up and Running
Editions O'Reilly – 318 pages Web services specifications Microsoft Press – 360 pages Java SOA Cookbook Editions O'Reilly – 782 pages - Formation Web Services - Formation SPRING 100

101 Fédération d'identités
Situation1 (e-commerce) : besoin communication sécurisée entre : Acteur 1 : Site e-commerce Acteur 2 : Usine Acteur 3 : Banque Acteur 4 : Assurance Acteur 5 : Logistique Spécifications Web Service de sécurité indépendante du protocole sous-jacent WS-Security WS-Federation SAML - Formation Web Services - Formation SPRING 101

102 Notion clé : SSO SSO (Single Sign On) : fournir mécanisme necessaire pour permettre à un utilisateur d'utiliser plusieurs applicatiosn différentes en s'authentifiant une seule fois. - Formation Web Services - Formation SPRING 102

103 ANNEXE : Approche code first avec CXF (WSDL → Code)
1 : Générer les classes du service à partir WSDL 2 : Implémenter les méthodes du service 3 : Publier le service 4 : Développer un client pour le service - Formation Web Services - Formation SPRING 103

104 ANNEXE : Approche code first avec CXF (WSDL → Code)
- Formation Web Services - Formation SPRING 104

105 Code first avec CXF : étape 1 (génération code service)
wsdl2java -ant -impl -server -d <Sortie> mon.wsdl Détail des arguments : -ant : crée un script ant pour génération code -impl : génère une classe d'implémentation -server : gènère un composant pour publier -d : répertoire de dépot code généré - Formation Web Services - Formation SPRING 105

106 Code first avec CXF : étape 1 (code généré par wsdl2java)
Classes de messages Entrée/Sortie JAXB Dans package 'inversé' du targetNameSpace Ex : ValidationCRI, ValidationCRIResponse Interface du service Classe d'implémentation du service Classe serveur standalone (publication & test WS) Fichier build.xml (générer source & publier) 1 2 3 4 5 - Formation Web Services - Formation SPRING 106

107 Code first avec CXF : étape 1 (génération code service)
2 4 3 1 - Formation Web Services - Formation SPRING 107

108 Code first avec CXF : étape 1 (génération code Interface service)
- Formation Web Services - Formation SPRING 108

109 Code first avec CXF : étape 2 (squelette Implémentation service)
- Formation Web Services - Formation SPRING 109

110 Code first avec CXF : étape 3 (publication service)
- Formation Web Services - Formation SPRING 110

111 Code first avec CXF : étape 1 (génération build.xml )
- Formation Web Services - Formation SPRING 111

112 Code first avec CXF : étape 3 (Lancement serveur )
- Formation Web Services - Formation SPRING 112

113 Code first avec CXF : étape 4 (Codage client )
Wsdl2java -impl -client -d <sortie> mon.wsdl 1 2 3 - Formation Web Services - Formation SPRING 113

114 Transport sécurisé HTTPS
1 : développer Interface & Impl du service 2 : générer clé cryto 3 : créer configuration client et serveur (xml cxf) jaxws:endpoint (cxl-servlet.xml) jaxws:client (client-bean.xml) 4 : créer un composant client qui utilise le service 5 : configurer le serveur pour support SSL 6 : Développer un client 7 : build & deploiement - Formation SPRING

115 www.objis.com - Formation SPRING
Génération clé Créer une paire de clés dans un store keytool -genkey -alias objiscert -keyalg RSA -keysize dname "CN=objis.com,OU=Formation,O=intra,L=Paris,S=Paris,C= FR" -keypass changeit -keystore objisKS.jks -storepass changeit (option) Analyser le contenu cacerts (/lib/security/cacerts) keytool -list -keystore cacerts -storepass changeit (option) Faire demande de certificat à autorité VeriSign keytool -certreq -v -alias objiscert -file objiscert-csr.pem - keypass changeit -storepass changeit -keystore objisKS.jks - Formation SPRING

116 Configuration client CXF
1 1 2 3 Lien utile : - Formation SPRING

117 Configuration (Spring) client
<http-conduit> permet de mettre en oeuvre propriétés SSL. - Formation SPRING

118 Codage (Spring) client
- Formation SPRING


Télécharger ppt "- Formation Web Services"

Présentations similaires


Annonces Google