Successfully reported this slideshow.
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 557 vues

Publié le

Publié dans : Technologie
  • Soyez le premier à commenter

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

×