Utilisation de services web
    sécurisés en Java en
environnement Open Source.

    Sébastien Lévesque
      architecte j...
Sommaire
●
    Introduction.
    –   Rappels sur les services web
●
    Le coeur de la sécurité XML:
    –   XML-DSIG, ide...
Sommaire
●
    WS-Policy
●
    Mise en oeuvre de WS-Security avec
    –   Jboss : JbossWs
    –   Glassfish V2 & Netbeans ...
Introduction: services web


●
    Applications, composants accessibles par l’entremise
    de protocoles Internet standar...
Introduction: services web


                                             WS-Coordination
                        WS-Relia...
Introduction: services web

SOAP
●
    Protocole simple pour l’échange d’information dans un
    environnement décentralis...
Introduction: services web

<env:Envelope
  xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'>
    <env:Header/>
    <...
Le coeur de la sécurité XML

XML-DSIG
●
    Signature du message XML:
     –   Intégrité, identité, non-répudiation
●
    ...
XML-DSIG
<Signature>                                              canonisation XML

    <SignedInfo>
                     ...
Le coeur de la sécurité XML

 XML-DSIG
 ●   Il y a 3 types de signature :
      –   Enveloppante : la signature contient l...
Le coeur de la sécurité XML

 XML-ENC
 ●
     Confidentialité des messages
 ●
     Chiffre une ou des portions du message
...
XML-ENC
 <EncryptedData Type? MimeType? Encoding? >
                            Algorithm='http://www.w3.org/2001/04/xmlen...
Le coeur de la sécurité XML

 XML-ENC
 <?xml version=quot;1.0quot;?>
 <InfoPaiement xmlns=quot;http://linagora.com/testquo...
Le coeur de la sécurité XML

 XML-ENC
 <?xml version=quot;1.0quot;?>
 <InfoPaiement xmlns=quot;http://linagora.com/testquo...
WS-Security

 WS-Security
 ●
     standardise les informations de sécurité dans un
     message SOAP
 ●
     2002  2004 S...
La sécurité du transport ou du
                       message?
       Couche de transport                Sécurité du messa...
WS-Security

 WS-Security
 ●
     permet :
     –   De signer tout ou une partie du message et de
         transmettre la ...
WS-Security

 Jeton de sécurité
 ●
     UsernameToken
 ●
     UsernameToken avec PasswordDigest
 ●
     Token binaire: Bin...
SOAP et XML-DSIG

     Enveloppe SOAP
        Header


         <wsse:BinarySecurityToken id=quot;b1quot;> ...

         <...
SOAP et XML-ENC/XML-DSIG

     Enveloppe SOAP

        Header


         <wsu:Timestamp wsu:Id='timestamp'>
         <wsu:...
WS-Security

 Autres spécifications de sécurité WS
 ●
     Intégration
     –   WS-Federation
     –   WS-Authorization
 ●...
WS-Policy

 WS-Policy

 ●
     Exprimer les possibilités, les exigences, et les
     caractéristiques de l'entité.
 ●
    ...
WS-Policy

 Définition
 <wsp:Policy xmlns:wsp=quot;quot; xmlns:wsse=quot;quot;>
 <wsp:ExactlyOne>
     <wsp:All wsp:Prefer...
Jboss

 JbossWS
 ●
     jbossws-2.0.2.GA (nov 2007)
 ●
     La sécurité de JbossWs:
     –   Supporte les policy
     –   ...
Jboss

 Un service web

 @WebService(name = quot;HelloWSMgmtquot;, targetNamespace =
    quot;http://sebserver.fr/helloquo...
Jboss

 Coté serveur
 WEB-INF/jboss-wsse-server.xml
 <jboss-ws-security xmlns=quot;http://www.jboss.com/ws-security/config...
Jboss

 Coté serveur, autre configuration
 WEB-INF/jboss-wsse-server.xml
 <config>
        <timestamp ttl=quot;300quot;/>
...
Jboss

 Coté client
 META-INF/jboss-wsse-client.xml


 <jboss-ws-security xmlns=quot;http://www.jboss.com/ws-security/conf...
Jboss

 Utilisation des policy
 WEB-INF/Policy.xml
 <wsp:Policy wsu:Id=quot;X509EndpointPolicyquot;
   xmlns:wsp=quot;http...
Jboss

 Un service web

 @WebService(name = quot;HelloWSMgmtquot;, targetNamespace =
    quot;http://sebserver.fr/helloquo...
Glassfish V2

 Métro - WSIT

 ●
     Standards de sécurité supportés (par XWSS 3.0):
     –   OASIS WSS 1.1
     –   WSS U...
GlassFish V2 & Netbeans 6


                    Sécuriser un service web




32
GlassFish V2 & Netbeans 6

                  Configuration
                  sur le chiffrement et la signature du message...
GlassFish V2 & Netbeans 6

 WS-Policy et WSDL




34
Merci de votre attention




                           35
Prochain SlideShare
Chargement dans…5
×

Utilisation de services Web sécurisés en Java en environnement Open Source

5 386 vues

Publié le

Publié dans : Technologie
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
5 386
Sur SlideShare
0
Issues des intégrations
0
Intégrations
42
Actions
Partages
0
Téléchargements
187
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Utilisation de services Web sécurisés en Java en environnement Open Source

  1. 1. Utilisation de services web sécurisés en Java en environnement Open Source. Sébastien Lévesque architecte java 1
  2. 2. Sommaire ● Introduction. – Rappels sur les services web ● Le coeur de la sécurité XML: – XML-DSIG, identité et intégrité – XML-ENC, confidentialité des messages ● WS-Security – La sécurité du transport ou du message? – Les jetons de sécurité – SOAP et XML-ENC/XML-DSIG 2
  3. 3. Sommaire ● WS-Policy ● Mise en oeuvre de WS-Security avec – Jboss : JbossWs – Glassfish V2 & Netbeans 6: Métro-WSIT 3
  4. 4. Introduction: services web ● Applications, composants accessibles par l’entremise de protocoles Internet standards, comme HTTP, SMTP, etc. ● Ils représentent des fonctionnalités avec une interface publique ● L’interface d’un service Web est définie uniquement sous forme de messages qu’elle accepte et génère ● Les services Web sont bâtis sur les spécifications XML, SOAP, WSDL et UDDI 4
  5. 5. Introduction: services web WS-Coordination WS-ReliableMessaging WS-AtomicTransactions HTTP, SOAP/TCP JMS Transport Fiabilité Transaction Sécurité WS-Security SMTP MTOM/XOP WS-I Basic Profile Service Web WS-I Attachments Profile implémente API JAX-WS WS-Addressing ... Librairies élémentaires: JAXB, JAXP, StAX, SAAJ... 5
  6. 6. Introduction: services web SOAP ● Protocole simple pour l’échange d’information dans un environnement décentralisé, distribué ● Basé sur XML ou plutôt XML infoset (SOAP 1.2) ● Définit : – un cadre pour la structure et le traitement des messages – des règles d’encodage pour la sérialisation des données ● une convention basée sur XML-RPC (remote procedure 6 call)
  7. 7. Introduction: services web <env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'> <env:Header/> <env:Body> <ns1:sayHello xmlns:ns1='http://sebserver.fr/hello'> <arg0>world!</arg0> </ns1:sayHello> Protocol Headers </env:Body> SOAP Envelope </env:Envelope> SOAP Header SOAP Body 7
  8. 8. Le coeur de la sécurité XML XML-DSIG ● Signature du message XML: – Intégrité, identité, non-répudiation ● Une signature numérique est aussi en XML ● Possibilité d'avoir de multiples signatures (co- signature/contre signature) ● Une signature s’applique à un ensemble d'URI pointant vers les objets à signer: – parties du document XML – un autre fichier XML ou binaire (pdf, images ...) 8
  9. 9. XML-DSIG <Signature> canonisation XML <SignedInfo> Algorithm='http://www.w3.org/2000/09/xml (CanonicalizationMethod) dsig#rsa-sha1' (SignatureMethod) URI=quot;#elementIDquot;ou URI= quot;file.pdfquot; (<Reference (URI=)? > (Transforms)? Pipelines: canonisation, base64, Xpath, XSLT, enveloped signature transform (DigestMethod) (DigestValue) Algorithm=quot;http://www.w3.org/2000/09/xmldsig#sha1quot; </Reference>)+ </SignedInfo> Condensé en base 64 de la référence (SignatureValue) Signature de <SignedInfo /> en base 64 (KeyInfo)? Donne la clef ou des Informations pour trouver cette clef lors de la validation (Object)* </Signature> 9
  10. 10. Le coeur de la sécurité XML XML-DSIG ● Il y a 3 types de signature : – Enveloppante : la signature contient le document signé – Enveloppée : la signature fait partie des données signées – Détachée : la signature et les données signées sont dans deux noeuds séparés, ou dans des fichiers différents. <signature> <element> <signature> <reference> <reference> a.pdf <reference> <Object> .............. <signature> </Object> <reference> b.xml </signature> </element> 10
  11. 11. Le coeur de la sécurité XML XML-ENC ● Confidentialité des messages ● Chiffre une ou des portions du message ● Algorithmes variés (3DES, AES128,AES256...) ● Utilise les balises de XML Signature (<KeyInfo/>) ● Chiffrement persistant dans la transmission d’un message SOAP qui passe par plusieurs acteurs 11
  12. 12. XML-ENC <EncryptedData Type? MimeType? Encoding? > Algorithm='http://www.w3.org/2001/04/xmlenc#aes128-cbc <EncryptionMethod/>? <ds:KeyInfo> Structure <EncryptedData> sur la clef de chiffrement <EncryptedKey>? ou protocole d'accord pour la génération la clef <AgreementMethod>? de chiffrement ou nom unique de clef de chiffrement connu par le destinataire <ds:KeyName/>? <ds:RetrievalMethod/>? ou une URI dans le document vers la clef de chiffrement </ds:KeyInfo>? <CipherData> Base 64 de l'information chiffrée <CipherValue />? <CipherReference URI>? Ou pointeur vers une ressource à chiffrer 12 </CipherData></EncryptedData>
  13. 13. Le coeur de la sécurité XML XML-ENC <?xml version=quot;1.0quot;?> <InfoPaiement xmlns=quot;http://linagora.com/testquot;> <Name>seb</Name> <CarteCredit> <Numero>1111 2222 3333 </Numero> <Emetteur>ma Banque</Emetteur> <Expiration>10-06</Expiration> </CarteCredit> </InfoPaiement> 13
  14. 14. Le coeur de la sécurité XML XML-ENC <?xml version=quot;1.0quot;?> <InfoPaiement xmlns=quot;http://linagora.com/testquot;> <Name>seb</Name> <EncryptedData Type=quot;http://www.w3.org/2001/04/xmlenc#Elementquot; xmlns=quot;http://www.w3.org/2001/04/xmlenc#quot;> <CipherData> <CipherValue>A23B45C56</CipherValue> </CipherData> </EncryptedData> </InfoPaiement> 14
  15. 15. WS-Security WS-Security ● standardise les informations de sécurité dans un message SOAP ● 2002  2004 Standard WSS (OASIS)  2006 WSS 1.1 ● Existe dans toutes les implémentations web service: – JbossWS du serveur Jboss – Métro du serveur Glassfish (XWSS) – Axis2 (Rampart) ... 15
  16. 16. La sécurité du transport ou du message? Couche de transport Sécurité du message ● Point à point ● Bout en bout ● Administration facile ● complexe, plusieurs options de sécurité ● S’applique à l'ensemble des données utiles du message et ● S’applique à des parties des à travers la session données utiles et seulement pour la requête ou la réponse ● Dépendant du niveau transport ● Sécurité possible aussi sur le niveau transport 16
  17. 17. WS-Security WS-Security ● permet : – De signer tout ou une partie du message et de transmettre la signature – De chiffrer tout ou des parties du message – De passer l’information sur les clés de chiffrement et sur la vérification de la signature – De passer des tokens pour l’authentification et l’autorisation dans le header du message SOAP 17
  18. 18. WS-Security Jeton de sécurité ● UsernameToken ● UsernameToken avec PasswordDigest ● Token binaire: BinarySecurityToken – certificat X509 – Kerberos (TGT, ST) ● Token XML – SAML... 18
  19. 19. SOAP et XML-DSIG Enveloppe SOAP Header <wsse:BinarySecurityToken id=quot;b1quot;> ... <ds:Signature> <ds:SignedInfo>... <ds:Reference URI=quot;#bodyquot;> <ds:Transform .../> <ds:DigestMethod /> </ds:Reference> </ds:SignedInfo> <ds:SignatureValue>...</ds:SignatureValue> <ds:KeyInfo> <wsse:SecurityTokenReference> <wsse:Reference URI='#b1'> </wsse:SecurityTokenReference></ds:KeyInfo> </ds:Signature> Body <arg0>world!</arg0> 19
  20. 20. SOAP et XML-ENC/XML-DSIG Enveloppe SOAP Header <wsu:Timestamp wsu:Id='timestamp'> <wsu:Created>2008-01-21T15:57:14.812Z</wsu:Created> </wsu:Timestamp> <wsse:BinarySecurityToken id=quot;b1quot;> ... <wsse:BinarySecurityToken id=quot;b2quot;> ... <ds:Signature> ... <ds:Reference URI=quot;#bodyquot;> <ds:Reference URI=quot;#timestampquot;> </ds:Signature> <xenc:EncryptedKey><xenc:ReferenceList></xenc:EncryptedKey> Body <EncryptedData></EncryptedData> <EncryptedData></EncryptedData> 20
  21. 21. WS-Security Autres spécifications de sécurité WS ● Intégration – WS-Federation – WS-Authorization ● Confiance – WS-Trust – WS-Privacy ● Interopérabilité – WS-SecureConversation – WS-Policy 21
  22. 22. WS-Policy WS-Policy ● Exprimer les possibilités, les exigences, et les caractéristiques de l'entité. ● S'applique aux consommateurs et aux services web. ● Informations sur la qualité de service, la sécurité etc... ● Pour un service web, spécifié dans le WSDL. 22
  23. 23. WS-Policy Définition <wsp:Policy xmlns:wsp=quot;quot; xmlns:wsse=quot;quot;> <wsp:ExactlyOne> <wsp:All wsp:Preference= quot;100quot; /> <wsse:SecurityToken Tokentype= quot;wsse:Kerberosv5TGTquot;/> <wsse:Algorithm Type=quot;wsse:AlgEncrytionquot; URI=quot;....xmlenc#aesquot;/> <wsp:All> <wsp:All wsp:Preference= quot;1quot; /> <wsse:SecurityToken Tokentype= quot;wsse:X509v3quot;/> <wsse:Algorithm Type=quot;wsse:AlgEncrytionquot; URI=quot;....xmlenc#3des-cbcquot;/> <wsp:All> </wsse> </wsp:ExactlyOne></wsp:Policy> 23
  24. 24. Jboss JbossWS ● jbossws-2.0.2.GA (nov 2007) ● La sécurité de JbossWs: – Supporte les policy – Authentification par Username Token – Génération de timestamp – Token par certificat X509 – Signature et chiffrement – Supporte les quot;key wrap algorithmsquot; – Configuration des cibles de chiffrements et signature 24
  25. 25. Jboss Un service web @WebService(name = quot;HelloWSMgmtquot;, targetNamespace = quot;http://sebserver.fr/helloquot; , serviceName = quot;HelloWSMgmtServicequot;) @EndpointConfig(configName = quot;Standard WSSecurity Endpointquot;) @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.WRAPPED,style=SOA PBinding.Style.DOCUMENT,use=SOAPBinding.Use.LITERAL) public class HelloWS{ @WebMethod public String sayHello(String texte) { return quot;hello quot; + texte; } } 25
  26. 26. Jboss Coté serveur WEB-INF/jboss-wsse-server.xml <jboss-ws-security xmlns=quot;http://www.jboss.com/ws-security/configquot;> <key-store-file>WEB-INF/wsse.keystore</key-store-file> <key-store-password>jbossws</key-store-password> <trust-store-file>WEB-INF/wsse.truststore</trust-store-file> <trust-store-password>jbossws</trust-store-password> <config> <encrypt type=quot;x509v3quot; alias=quot;wssequot;/> <requires><encryption/></requires> </config> </jboss-ws-security> 26
  27. 27. Jboss Coté serveur, autre configuration WEB-INF/jboss-wsse-server.xml <config> <timestamp ttl=quot;300quot;/> <sign type=quot;x509v3quot; alias=quot;1quot; includeTimestamp=quot;truequot;/> <encrypt type=quot;x509v3quot; alias=quot;alicequot; algorithm=quot;aes-256quot; keyWrapAlgorithm=quot;rsa_oaepquot; > <targets> <target type=quot;qnamequot;>{http://www.my-company.com/cc} CardNumber</target></targets> </encrypt> <requires><signature/><encryption/></requires> </config> 27
  28. 28. Jboss Coté client META-INF/jboss-wsse-client.xml <jboss-ws-security xmlns=quot;http://www.jboss.com/ws-security/configquot; > <config> <encrypt type=quot;x509v3quot; alias=quot;wssequot;/> <requires><encryption/></requires> </requires> </config> </jboss-ws-security> 28
  29. 29. Jboss Utilisation des policy WEB-INF/Policy.xml <wsp:Policy wsu:Id=quot;X509EndpointPolicyquot; xmlns:wsp=quot;http://schemas.xmlsoap.org/ws/2004/09/policyquot; > <wsp:ExactlyOne><wsp:All> <sp:jboss-ws-security> ....... <sp:config><sp:encrypt type=quot;x509v3quot; alias=quot;wssequot;/> <sp:requires><sp:encryption/></sp:requires> </sp:config> ........ </wsp:Policy> 29
  30. 30. Jboss Un service web @WebService(name = quot;HelloWSMgmtquot;, targetNamespace = quot;http://sebserver.fr/helloquot; , serviceName = quot;HelloWSMgmtServicequot;) @PolicyAttachment({@Policy( policyFileLocation=quot;WEB-INF/Policy.xmlquot;, scope = PolicyScopeLevel.WSDL_PORT ) }) public class HelloWS{ @WebMethod public String sayHello(String texte) { return quot;hello quot; + texte; } } 30
  31. 31. Glassfish V2 Métro - WSIT ● Standards de sécurité supportés (par XWSS 3.0): – OASIS WSS 1.1 – WSS UsernameToken Profile 1.1 [partiel] – WSS X509 Token Profile 1.1 [partiel] – WSS SAML Token Profile 1.1 [partiel] – WSS SWA Profile 1.1 [partiel] 31
  32. 32. GlassFish V2 & Netbeans 6 Sécuriser un service web 32
  33. 33. GlassFish V2 & Netbeans 6 Configuration sur le chiffrement et la signature du message 33
  34. 34. GlassFish V2 & Netbeans 6 WS-Policy et WSDL 34
  35. 35. Merci de votre attention 35

×