09/12/2010




EJB avancés
   Objectif : Etudier la configuration du contexte
    d’exécution
       Sa mise en œuvre implicite
       Et explicite


   Transactions
   Sécurité
   Timer
   Récapitulatif
   Performances




Les transactions
   Concept fondamental dans les applications distribuées
   Indispensables pour une exécution sûre des services
   Difficiles à mettre en œuvre
   Problèmes de performances




                                                                    1
09/12/2010




Atomicité
   Garantir une exécution tout ou rien
   Difficile sur un système centralisé
   Encore plus dans une architecture distribuée
       Nombreuses possibilités d'erreurs




Concurrence d'accès
   Cause de nombreux problèmes
   Comment garantir des exécutions correctes ?
   Et des performances acceptables ?




                                                           2
09/12/2010




Les propriétés ACID
   Atomicité
   Consistence
   Isolation
   Durabilité




Les modèles de transactions
   Flat
   Nested
   Flexible
   Distributed
   ...




                                      3
09/12/2010




Flat Transactions




Nested Transaction




                             4
09/12/2010




Distributed Transaction




Java Transaction Service
   Fournit l'interface avec des moniteurs transactionnels
       Communication avec les moniteurs (XAResource)
       Communication avec les serveurs d'application
        (TransactionManager)
       Communication avec les clients (UserTransaction)




                                                                     5
09/12/2010




Transactions et EJB
   Container Managed
       Le container se charge de tout
       Approche déclarative
   Bean Managed
       Transaction gérée par programme dans les beans
   Client Controlled
       Transaction programmée du coté client




Bean Managed




                                                                 6
09/12/2010




Container Managed




Client Controlled




                            7
09/12/2010




Gérer la visibilité des transactions ?




Les attributs de transaction (Container
managed)




                                                  8
09/12/2010




Exemple




Transactions et types de beans




                                         9
09/12/2010




L'interface UserTransaction




Statut des transactions




                                     10
09/12/2010




Utilisation dans un client

                                                     Encore de l'injection




L'isolation
   Garantir la cohérence des accès concurrent
       Sérialisabilité (les exécutions concurrentes sont équivalentes à
        des exécutions en série)
   Problèmes classiques
       Lecture impropre
       Perte de mise à jour
   Utilisations de verrous mais
       Deadlock
       Pénalités sur les performances




                                                                                    11
09/12/2010




Les niveaux d'isolation
   READ UNCOMMITED
       Pas d'isolation – on voit tout – on ne tient pas compte des
        verrous en lecture
   READ COMMITED
       On ne lit que des résultats commités – mais lectures non
        répétables
   REPEATABLE READ
       Les lectures sont répétables mais lecture fantomes (nouvelles
        données en cours de transaction)
   SERIALIZABLE
   Mise en oeuvre dépendante des serveurs d'application et
    des base de données




Container Managed Concurrency




                                                                               12
09/12/2010




Concurrent access + Timeout




Bean Managed Concurrency




                                     13
09/12/2010




Contrôle optimiste ou pessimiste
   Pessimiste : on évite les problèmes à priori
       Problèmes de performance
   Optimiste : on vérifie a posteriori qu'il n'y en a pas eu
       Meilleure performance
       Risque de perdre du travail




Conclusion
   Les transactions sont faciles à mettre en oeuvre
   Mais difficile à contrôler
       Quelles garanties on veut avoir ?
       Quels scénarios sont les plus probables ?
       Quels compromis entre performances et sureté de l'exécution
        sont acceptables ?




                                                                             14
09/12/2010




La sécurité
   Aspect fondamental des applications distribuées
   Quels sont les risques ? Quels sont les parties critiques
    de l'application




Les fonctions
   Authentification
       Est-tu bien celui que tu prétends être ?
   Autorisation
       As-tu bien le droit de faire ça ?
   Intégrité des données
       Les données peuvent elles être modifiées
   Confidentialité des données
       As-tu le droit de lire ces données ?




                                                                       15
09/12/2010




Sécurité des applications Web
   Premier point d'interactions avec les utilisateurs
   Dépend des specs servlet et J2EE
   3 modes d'authentification
       HTTP Basic and Digest
       Form Based
       HTTPS Client authentification (certificat)




                                                                16
09/12/2010




Autorisation dans les applications Web
   Déclarative
       Règles de sécurité dans le descripteur
   Programmée
       Contrôles de sécurité dans les servlets
       Contexte de sécurité




Confidentialité/Intégrité
   Basé sur un transport sécurisé (HTTPS)
   Contraintes dans le descripteur de déploiement
    (CONFIDENTIAL, INTEGRAL, NONE)




                                                            17
09/12/2010




Sécurité dans les EJB
   Authentification basée sur JAAS
       Java Authentication and autorisation Service




Subject
   Container pour principal et credentials
                               The Subject in Detail

                                     Principal
                                      Principal
                                        Principal


                                                  Public
                                                   Public
                                                Credential
                           Subject                   Public
                                                 Credential
                                                   Credential


                                      Private
                                        Private
                                     Credential
                                          Private
                                      Credential
                                        Credential




                                                                       18
09/12/2010




Principal
   Identifie un Subject
   Un Subject = plusieurs principals


1. package java.security;
2. public interface Principal {
3.     ...
4.     public String getName();
5. }




Role, User, Group




                                               19
09/12/2010




Différents login modules

                     Pluggable Authentication

                             Application


                            Login Context


                            Login Modules
                NTLogin       UnixLogin      MyLogin
                Module         Module        Module

                JndiLogin    Krb5Login       DbLogin
                 Module       Module         Module


                NT              Unix           Biometric
           Authentication   Authentication   Authentication

                              Kerberos
           LDAP Server                          RDBMS
                            Authentication




Le fonctionnement de JAAS




                                                                     20
09/12/2010




Login Configuration




Exemple de login




                             21
09/12/2010




Le CallBackHandler




Les autorisations
   Autorisations programmées
       Codées dans les Beans
   Autorisations déclarées
       Le container prend en charge le contrôle des autorisations




                                                                            22
09/12/2010




Les roles
   Un rôle = une collection d'identités
       Employé
       Etudiant
       Administrateurs
       ...




La déclaration de la sécurité
                                             Les roles utilisés


                                             Le rôle par défaut




                                              Le rôle autorisé




                                           Tout le monde peut
                                                  le faire




                                                                         23
09/12/2010




Les annotations
   @RolesAllowed
   @PermitAll
   @DenyAll
   La définition au niveau de la méthode surcharge la
    définition au niveau de la classe




Progagation de la sécurité
   @RunAs(''admin'')
       Surcharge le rôle du contexte de l'appelant
       La méthode va s'exécuter avec le rôle admin




                                                                24
09/12/2010




La propagation de la sécurité
   L'identité et les rôles sont transmis par le contexte



                                         L'identité de l'appelant




                                       Vérification de son rôle




Autre exemple (from Oracle)




                                                                           25
09/12/2010




Description par fichier de configuration




Declaratif ou programmée
   Déclaratif :
       Découplage du code métier et de la définition de la sécurité
       Mais .... c'est insuffisant
   Programmée
       Complique le code
       Mais permet un contrôle au niveau des instances




                                                                              26
09/12/2010




Sécurité et WebServices
   Comment sécuriser des appels de Web Services de bout
    en bout




XML Signature et XML Encryption
   Permettent le transfert de documents XML entre des
    noeuds inconnus
   Les parties cryptées ne seront lisibles que par les noeuds
    qui connaissent les clés.
   Tout le message n'a pas besoin d'être crypté/signé




                                                                        27
09/12/2010




SAML
   Security Assertion Markup Language
   Assertion = Security token
   Utilisées par les PEP (Policy Enforcement Point)
   SAML Authority : emets les token
       Token = le sujet est authentifié par moi ou j'autorise le sujet à
        faire A et B ou le sujet a le rôle X
   Le PEP doit faire confiance à l'autorité




WS-Security
   The security context is in the message




                                                                                   28
09/12/2010




Conclusion sur la sécurité
   Encore difficile à mettre en oeuvre
   Encore plus dans un environnement distribué
   Nombreux standards
       Ça progresse dans le domaine des Web Services




EJB Timer
   Comment déclencher des actions à des instants
    particuliers
       Opérations de maintenance
       Batch processing
       Deadline dans des workflows
   Comment permettre d'appeler des services à des
    instants donnés




                                                               29
09/12/2010




Timer Service API
   javax.ejb.TimedObject
   javax.ejb.Timer
   javax.ejb.TimerHandle
   javax.ejb.TimerService




TimerService
   Permet de créer un Timer




                                      30
09/12/2010




Interactions avec les EJB




Création automatique de Timers




                                        31
09/12/2010




EJB et Timer
   Portable
   Facile à mettre en oeuvre
   Granularité des services
   Limitations dans la définition des timers




L’exemple Duke Bank




                                                       32
09/12/2010




La structure de l’application




Les Session Beans
   AccountController
   CustomerController
   TxController

       Implantation des méthodes métiers de l’application
       Facade pour les clients
       Masquent la représentation du modèle




                                                                    33
09/12/2010




       34
09/12/2010




Les Entity Classes




Entity Account




                            35
09/12/2010




Les requêtes




La table




                      36
09/12/2010




Application d’administration




Application Web




                                      37
09/12/2010




EJB et Web
   CustomerBean
       Composant représentant le client dans la vue




Performance
   http://java.sun.com/developer/technicalArticles/ebeans/ej
    b_30/
   Conception des applications
       Un appel par cas d’utilisation
       Stateful vs Stateless
       Gestion de la persistence
       Gestion des différents niveaux de cache
       Consistence vs availability




                                                                       38
09/12/2010




                         That’s all folks




http://www.youtube.com/watch?v=gBzJGckMYO4




                                                    39

Ejb advanced2010

  • 1.
    09/12/2010 EJB avancés  Objectif : Etudier la configuration du contexte d’exécution  Sa mise en œuvre implicite  Et explicite  Transactions  Sécurité  Timer  Récapitulatif  Performances Les transactions  Concept fondamental dans les applications distribuées  Indispensables pour une exécution sûre des services  Difficiles à mettre en œuvre  Problèmes de performances 1
  • 2.
    09/12/2010 Atomicité  Garantir une exécution tout ou rien  Difficile sur un système centralisé  Encore plus dans une architecture distribuée  Nombreuses possibilités d'erreurs Concurrence d'accès  Cause de nombreux problèmes  Comment garantir des exécutions correctes ?  Et des performances acceptables ? 2
  • 3.
    09/12/2010 Les propriétés ACID  Atomicité  Consistence  Isolation  Durabilité Les modèles de transactions  Flat  Nested  Flexible  Distributed  ... 3
  • 4.
  • 5.
    09/12/2010 Distributed Transaction Java TransactionService  Fournit l'interface avec des moniteurs transactionnels  Communication avec les moniteurs (XAResource)  Communication avec les serveurs d'application (TransactionManager)  Communication avec les clients (UserTransaction) 5
  • 6.
    09/12/2010 Transactions et EJB  Container Managed  Le container se charge de tout  Approche déclarative  Bean Managed  Transaction gérée par programme dans les beans  Client Controlled  Transaction programmée du coté client Bean Managed 6
  • 7.
  • 8.
    09/12/2010 Gérer la visibilitédes transactions ? Les attributs de transaction (Container managed) 8
  • 9.
  • 10.
  • 11.
    09/12/2010 Utilisation dans unclient Encore de l'injection L'isolation  Garantir la cohérence des accès concurrent  Sérialisabilité (les exécutions concurrentes sont équivalentes à des exécutions en série)  Problèmes classiques  Lecture impropre  Perte de mise à jour  Utilisations de verrous mais  Deadlock  Pénalités sur les performances 11
  • 12.
    09/12/2010 Les niveaux d'isolation  READ UNCOMMITED  Pas d'isolation – on voit tout – on ne tient pas compte des verrous en lecture  READ COMMITED  On ne lit que des résultats commités – mais lectures non répétables  REPEATABLE READ  Les lectures sont répétables mais lecture fantomes (nouvelles données en cours de transaction)  SERIALIZABLE  Mise en oeuvre dépendante des serveurs d'application et des base de données Container Managed Concurrency 12
  • 13.
    09/12/2010 Concurrent access +Timeout Bean Managed Concurrency 13
  • 14.
    09/12/2010 Contrôle optimiste oupessimiste  Pessimiste : on évite les problèmes à priori  Problèmes de performance  Optimiste : on vérifie a posteriori qu'il n'y en a pas eu  Meilleure performance  Risque de perdre du travail Conclusion  Les transactions sont faciles à mettre en oeuvre  Mais difficile à contrôler  Quelles garanties on veut avoir ?  Quels scénarios sont les plus probables ?  Quels compromis entre performances et sureté de l'exécution sont acceptables ? 14
  • 15.
    09/12/2010 La sécurité  Aspect fondamental des applications distribuées  Quels sont les risques ? Quels sont les parties critiques de l'application Les fonctions  Authentification  Est-tu bien celui que tu prétends être ?  Autorisation  As-tu bien le droit de faire ça ?  Intégrité des données  Les données peuvent elles être modifiées  Confidentialité des données  As-tu le droit de lire ces données ? 15
  • 16.
    09/12/2010 Sécurité des applicationsWeb  Premier point d'interactions avec les utilisateurs  Dépend des specs servlet et J2EE  3 modes d'authentification  HTTP Basic and Digest  Form Based  HTTPS Client authentification (certificat) 16
  • 17.
    09/12/2010 Autorisation dans lesapplications Web  Déclarative  Règles de sécurité dans le descripteur  Programmée  Contrôles de sécurité dans les servlets  Contexte de sécurité Confidentialité/Intégrité  Basé sur un transport sécurisé (HTTPS)  Contraintes dans le descripteur de déploiement (CONFIDENTIAL, INTEGRAL, NONE) 17
  • 18.
    09/12/2010 Sécurité dans lesEJB  Authentification basée sur JAAS  Java Authentication and autorisation Service Subject  Container pour principal et credentials The Subject in Detail Principal Principal Principal Public Public Credential Subject Public Credential Credential Private Private Credential Private Credential Credential 18
  • 19.
    09/12/2010 Principal  Identifie un Subject  Un Subject = plusieurs principals 1. package java.security; 2. public interface Principal { 3. ... 4. public String getName(); 5. } Role, User, Group 19
  • 20.
    09/12/2010 Différents login modules Pluggable Authentication Application Login Context Login Modules NTLogin UnixLogin MyLogin Module Module Module JndiLogin Krb5Login DbLogin Module Module Module NT Unix Biometric Authentication Authentication Authentication Kerberos LDAP Server RDBMS Authentication Le fonctionnement de JAAS 20
  • 21.
  • 22.
    09/12/2010 Le CallBackHandler Les autorisations  Autorisations programmées  Codées dans les Beans  Autorisations déclarées  Le container prend en charge le contrôle des autorisations 22
  • 23.
    09/12/2010 Les roles  Un rôle = une collection d'identités  Employé  Etudiant  Administrateurs  ... La déclaration de la sécurité Les roles utilisés Le rôle par défaut Le rôle autorisé Tout le monde peut le faire 23
  • 24.
    09/12/2010 Les annotations  @RolesAllowed  @PermitAll  @DenyAll  La définition au niveau de la méthode surcharge la définition au niveau de la classe Progagation de la sécurité  @RunAs(''admin'')  Surcharge le rôle du contexte de l'appelant  La méthode va s'exécuter avec le rôle admin 24
  • 25.
    09/12/2010 La propagation dela sécurité  L'identité et les rôles sont transmis par le contexte L'identité de l'appelant Vérification de son rôle Autre exemple (from Oracle) 25
  • 26.
    09/12/2010 Description par fichierde configuration Declaratif ou programmée  Déclaratif :  Découplage du code métier et de la définition de la sécurité  Mais .... c'est insuffisant  Programmée  Complique le code  Mais permet un contrôle au niveau des instances 26
  • 27.
    09/12/2010 Sécurité et WebServices  Comment sécuriser des appels de Web Services de bout en bout XML Signature et XML Encryption  Permettent le transfert de documents XML entre des noeuds inconnus  Les parties cryptées ne seront lisibles que par les noeuds qui connaissent les clés.  Tout le message n'a pas besoin d'être crypté/signé 27
  • 28.
    09/12/2010 SAML  Security Assertion Markup Language  Assertion = Security token  Utilisées par les PEP (Policy Enforcement Point)  SAML Authority : emets les token  Token = le sujet est authentifié par moi ou j'autorise le sujet à faire A et B ou le sujet a le rôle X  Le PEP doit faire confiance à l'autorité WS-Security  The security context is in the message 28
  • 29.
    09/12/2010 Conclusion sur lasécurité  Encore difficile à mettre en oeuvre  Encore plus dans un environnement distribué  Nombreux standards  Ça progresse dans le domaine des Web Services EJB Timer  Comment déclencher des actions à des instants particuliers  Opérations de maintenance  Batch processing  Deadline dans des workflows  Comment permettre d'appeler des services à des instants donnés 29
  • 30.
    09/12/2010 Timer Service API  javax.ejb.TimedObject  javax.ejb.Timer  javax.ejb.TimerHandle  javax.ejb.TimerService TimerService  Permet de créer un Timer 30
  • 31.
    09/12/2010 Interactions avec lesEJB Création automatique de Timers 31
  • 32.
    09/12/2010 EJB et Timer  Portable  Facile à mettre en oeuvre  Granularité des services  Limitations dans la définition des timers L’exemple Duke Bank 32
  • 33.
    09/12/2010 La structure del’application Les Session Beans  AccountController  CustomerController  TxController  Implantation des méthodes métiers de l’application  Facade pour les clients  Masquent la représentation du modèle 33
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
    09/12/2010 EJB et Web  CustomerBean  Composant représentant le client dans la vue Performance  http://java.sun.com/developer/technicalArticles/ebeans/ej b_30/  Conception des applications  Un appel par cas d’utilisation  Stateful vs Stateless  Gestion de la persistence  Gestion des différents niveaux de cache  Consistence vs availability 38
  • 39.
    09/12/2010 That’s all folks http://www.youtube.com/watch?v=gBzJGckMYO4 39