Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
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
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.