Vous êtes sur la page 1sur 62

Ccile Hardebolle

cecile.hardebolle@supelec.fr

Dveloppement web avec Java


Tutoriel

Plan

5.

Principes des applications web


Et Java dans tout a ?
Principaux composants Java EE pour le web
Persistance des donnes
Application Java EE

Dveloppement web avec Java EE

1.
2.
3.
4.

23 novembre 2010

Principes des applications web

Dveloppement web avec Java EE

23 novembre 2010

Principe des sites web


Pages HTML statiques
Obtention via le protocole HTTP (requte / rponse)

Serveur web
wwwdi.supelec.fr

Client

1 Requte :
http://wwwdi.supelec.fr/hardebolle/fichier. html
3 Affichage :
interprtation
HTML

C:\server\htdocs\hardebolle\

HTML
HTML
fichier. html

2 Rponse :
fichier.html
fichier. html

Dveloppement web avec Java EE

23 novembre 2010

HTML
HTML = EXtensible HyperText Markup Language

Un langage base de balises


XML avec une grammaire dfinie

<?xml version="1.0" encoding="UTF-8"?>


<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1//EN
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Le titre de la fentre</title>
</head>
<body>
<p>Voici ma premire page</p>
</body>
</html>
5

html
head

body

title

Le titre de la
fentre

Voici ma
premire page

Dveloppement web avec Java EE

23 novembre 2010

Structuration de texte

<body>
<h1>Gros titre</h1>
<p>Voici mon paragraphe</p>
<h2>Section</h2>
<h3>Sous-section</h3>
<img src="help.png" alt="Ampoule"/>
<p>Un nouveau paragraphe avec un
<a href="http://www.supelec.fr">lien hypertexte</a>.
</p>
</body>

Dveloppement web avec Java EE

23 novembre 2010

CSS (Cascading Style Sheets)


HTML : apparence par dfaut
CSS : personnalisation de lapparence de HTML

Attribut de dfinition de style


<h1 style="color:purple;">Gros titre</h1>

Surcharge du style par dfaut


<h2>Section</h2>
h2 { text-decoration: underline; }

Identifiant
<img id="ampoule" src="help.png" alt="Ampoule"/>
#ampoule { border: 3px dashed blue; }

Classe de style
<p class="myp">Voici mon paragraphe</p>
.myp { font-style: italic; }

Dveloppement web avec Java EE

23 novembre 2010

Principe des applications web


Gnration dynamique du contenu HTML
partir dun langage de programmation

Serveur web
wwwdi.supelec.fr

Client

1 Requte :
http://wwwdi.supelec.fr/fichier. xyz
4 Affichage :
interprtation
HTML

HTML

fichier. xyz

Script
2 Excution :
Script HTML

3 Rponse :
fichier.xyz (HTML)

fichier. xyz

PHP, ASP, Perl,


CGI
8

Dveloppement web avec Java EE

23 novembre 2010

Formulaires
Interaction avec lutilisateur

Requte = envoi de donnes


Rponse = rsultat du traitement des donnes
Serveur web
wwwdi.supelec.fr

Client

HTML

1 Requte :
http://wwwdi.supelec.fr/reponse.xyz + donnes

formulaire. xyz
3 Rponse :
reponse.xyz (HTML)
4 Affichage :
interprtation
HTML

Script
2 Excution :
Script HTML
&
reponse. xyz
traitement des
donnes

HTML

reponse. xyz

Dveloppement web avec Java EE

23 novembre 2010

Structure des formulaires

<body>
<h1>Un formulaire</h1>
<form action="reponse.xyz" method="POST">
<label for="prenom">Prnom :</label>
<input type="text" id="prenom" name="prenom"/>
<input type="submit" value="S'inscrire !"/>
</form>
</body>

10

Dveloppement web avec Java EE

23 novembre 2010

Et Java dans tout a ?

11

Dveloppement web avec Java EE

23 novembre 2010

Java : langage et plate-forme

Java Platform Standard Edition (Java SE) =


JVM (machine virtuelle) + APIs (bibliothques) + Java

Source : Java SE 6 Documentation

12

Dveloppement web avec Java EE

23 novembre 2010

Classe Java
public class Person {

public class AutreClasse {

private String name;


private boolean deceased;

private Integer oneNumber;


public AutreClasse (Integer o) {
this. oneNumber = o;
}

public PersonBean(String n, boolean d) {


this.name = n;
this.deceased = d;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}

public Integer doSomething(Integer i) {


return (i * i);
}

public Person createRobert(){


Person robert;
robert = new Person("Robert, false);
return robert;
}
}

}
13

Dveloppement web avec Java EE

23 novembre 2010

Composants

Composant = unit logique de traitement

Objectif : modularit et rutilisation


Proprits :

Identification : nom unique, rfrenc dans un annuaire


Indpendance : utilisable tout seul
Rutilisation : utilisable dans diffrents contextes
Intgration : combinable avec dautres composants

composant
objetX
objetY

Technologies dimplmentation multiples

Dploiement sur serveur

14

Dveloppement web avec Java EE

23 novembre 2010

Composants et architectures N-tiers

3 niveaux types de responsabilits pour les composants


Interaction avec lutilisateur

Prsentation

Traitement

Traitements mtiers

Ressources

Gestion des ressources, des donnes

N tiers sur lesquels sont distribues les composants


P

Client
mobile
15

Serveur
web

Serveur
dapplications

Serveur
de base de donnes

La phase de dveloppement avec Java EE

23 novembre 2010

Composants Java : JavaBeans

Composant implment par une classe Java

Classe Java mais conventions respecter

Srialisation
Constructeur par dfaut
Proprits prives avec accesseurs
(encapsulation et introspection)

public <returntype> get<Propertyname>()


public void set<Propertyname> (parameter)

Mthodes dinterception dvnements

Utilisation dcouteurs et gnration dvnements


Ex : PropertyChangeListener

16

Dveloppement web avec Java EE

23 novembre 2010

JavaBeans
Exemple
public class PersonBean implements Serializable {
private String name;
private boolean deceased;
public PersonBean() { }
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public boolean isDeceased() {
return this.deceased;
}
public void setDeceased(boolean deceased) {
this.deceased = deceased;
}
}
17

Dveloppement web avec Java EE

23 novembre 2010

Java Enterprise Edition Java EE

Un ensemble de spcifications

Proposes par la socit Sun (Oracle)


& portes par un consortium de socits internationales

Ddies au dveloppement, au dploiement et la gestion


dapplications n-tiers base de composants centres sur le serveur

Bases sur Java 2 Platform, Standard Edition (J2SE) avec

Les spcification du Serveur dApplications


Des bibliothques pour le dveloppement d'applications dentreprises (API)

Une implmentation de rfrence =


le Serveur dApplications GlassFish
18

Dveloppement web avec Java EE

23 novembre 2010

Ce que dfinit Java EE

Des composants pour embarquer le code des diffrents


lments dune application

Des conteneurs pour hberger les diffrents composants


dune application

Conteneur web
Conteneur mtier

Des services support pour les aspects transverses

Composants web
Composants mtiers

Scurit, transactions

Des infrastructures de communication


19

Dveloppement web avec Java EE

23 novembre 2010

Le serveur dapplication Java EE


Web
Container
HTML/
XML

EJB Container
EJB Session

Servlet

EJB Entit

EJB
Message

JSP/JSF

Communication

Middleware
(TCP/IP, HTTP, SSL, RMI, RMI-IIOP)

20

Dveloppement web avec Java EE

Gestion du XML
(JAX, DOM)

Administration
(JMX)

Connecteurs (JCA)

Accs aux donnes


(JDBC)

Communication
asynchrone (JMS)

Mails (Java Mail)

Transactions (JTA,
JTS)

Scurit (JAAS, JCE,


JSSE)

Serveur de noms
(JNDI)

Services

23 novembre 2010

Sous-ensemble de spcifications spar


ddi au dveloppement web

Inclut

Source : Whats new in Java EE 6, Antonio Goncalves

Java EE Web Profile

Composants web
Composants mtier lgers
API communes

Nutilise que le conteneur Web

21

Dveloppement web avec Java EE

23 novembre 2010

Java EE Web Profile


Web
Container
HTML/
XML

EJB Session

Servlet

JSP/JSF

EJB Session

EJB Container

EJB Entit

EJB Entit

EJB
Message

Communication

Middleware
(TCP/IP, HTTP, SSL, RMI, RMI-IIOP)

22

Dveloppement web avec Java EE

Gestion du XML
(JAX, DOM)

Administration
(JMX)

Connecteurs (JCA)

Accs aux donnes


(JDBC)

Communication
asynchrone (JMS)

Mails (Java Mail)

Transactions (JTA,
JTS)

Scurit (JAAS, JCE,


JSSE)

Serveur de noms
(JNDI)

Services

23 novembre 2010

Architectures Java EE type


P

Navigateur
web

Java EE
conteneur web

Java EE
conteneur d'EJB

Serveur
de base de donnes

Full Profile

R
Web Profile

Navigateur
web

23

Java EE
conteneur web

Serveur
de base de donnes

La phase de dveloppement avec Java EE

23 novembre 2010

Principaux composants Java EE


pour le web

24

Dveloppement web avec Java EE

23 novembre 2010

Partie web de Java EE

Navigateur
web

25

Java EE
conteneur web

La phase de dveloppement avec Java EE

Serveur
de base de donnes

23 novembre 2010

Servlets

Servlet = composant Java, accessible une URL donne,


destin :

Rcuprer les requtes HTTP de lutilisateur


Invoquer les traitements applicatifs Java correspondants
Construire la page HTML de rponse pour lutilisateur
Serveur Java EE
wwwdi.supelec.fr

Client

1 - Requte :
http://wwwdi.supelec.fr/hardebolle/fichier. html
4 - Affichage :
interprtation
HTML

HTML

fichier. html

26

/hardebolle/*
Servlet

3 - Rponse :
fichier.html

Dveloppement web avec Java EE

2 Excution
de la Servlet :
Java HTML

23 novembre 2010

Servlets
Exemple
@WebServlet(name="PremiereServlet", urlPatterns={"/premiereServlet"})
public class PremiereServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest requete, HttpServletResponse reponse)
throws IOException, ServletException {
reponse.setContentType("text/html");
PrintWriter pw = reponse.getWriter();
try {
pw.print("<html>");
pw.print("<head>");
pw.print("<title>Ma premire servlet</title>");
pw.print("</head>");
pw.print("<body>");
pw.print("<h1>Ca marche !</h1>");
pw.print("</body>");
pw.print("</html>");
} finally {
out.close();
}

Problmes :
maintenance, volution !

}
}
27

Dveloppement web avec Java EE

23 novembre 2010

Patron Modle-Vue-Contrleur (MVC)

Principe = sparation des responsabilits

Vue : gre les sorties = visualisation (interface utilisateur)


Contrleur : gre les entres

Traitement des actions de lutilisateur et choix des vues


Gestion des modifications du modle

Modle : gre la logique et les donnes


Contrleur
Contrleur
Modle
Modle

Client
Vue
Vue
28

Dveloppement web avec Java EE

23 novembre 2010

JavaServer Faces (JSF)

Framework de composants web bas sur MVC amlior :


modle = logique + donnes

Contrleur =
FacesServlet

Modle =
Managed
Logique
Bean

Navigateur
Vue =
Vue
page
JSF

29

Dveloppement web avec Java EE

JavaBean, EJB
Modle

EJB = Enterprise JavaBean

23 novembre 2010

Ce que JSF dfinit

Contrleur unique = FacesServlet

Modle =

Gre les vnements et les interactions avec le client

Logique = Managed Beans ou backing beans


Donnes = JavaBeans, Enterprise JavaBeans

Vue = page JSF = arbre de composants

Composants prdfinis avec un rendu HTML


Modles de navigation

30

Statique : liens hypertextes entre vues


Dynamique : rgles de navigation sappuyant sur un bean

Outils : convertisseur et validateurs


Dveloppement web avec Java EE

23 novembre 2010

Principe de JSF
Serveur Java EE
wwwdi.supelec.fr

Client

1 - Requte :
http://wwwdi.supelec.fr/hardebolle/fichier. xhtml
5 - Affichage :
interprtation
HTML

Faces
Servlet

HTML

fichier. xhtml

/hardebolle/*

4 - Rponse :
fichier.xhtml

2 Excution
du contrleur

3 Rendu des
composants :
JSF HTML

Managed
Bean

Page JSF

fichier. xhtml

31

Dveloppement web avec Java EE

23 novembre 2010

Composants JSF

Un composant JSF =

Une classe : gre les vnements


utilisateur

Un tag : permet de linclure dans


une vue JSF

Un rendu : gnre la partie graphique


de linterface utilisateur

Par dfaut : rendu HTML

UISelectOne choiceMenu;

<h:selectOneMenu id="choice" value="">


<f:selectItems value="" />
</h:selectOneMenu>

<select id="j_idt7:choice" name="j_idt7:choice"


size="1">
<option value="1" selected="selected">
item 1</option>
<option value="2">item 2</option>
</select>

Bibliothques de composants
prdfinis et composables
32

Dveloppement web avec Java EE

23 novembre 2010

Managed Beans (backing beans)

Composant gr par le contrleur JSF

JavaBean mais avec annotations


Gestion par le conteneur (cration, cycle de vie)

Services basiques

Identification unique, utilisation dans les composants JSF


Expression Language (EL)

33

Gestion du scope (dure de conservation de l'tat)


Gestion du cycle de vie via des callbacks
Injection
Conversion / validation des donnes

Dveloppement web avec Java EE

23 novembre 2010

Managed Bean
Exemple
@ManagedBean
@SessionScoped
public class MyManagedBean implements Serializable {
@NotNull @Size(max=50)
private String name;
public MyManagedBean (){}
@PostConstruct
public void mySetup () {
this.name = "Duke";
}
public String getName(){
return name;
}
public void setName(String n){
this.name = n;
}

public String sayHello() {


return "Hello, Im " + this.name;
}
}
34

Dveloppement web avec Java EE

23 novembre 2010

Managed Beans et Composants JSF


Exemple

<h:body>
<f:view>
<h:form>
<h1>Cration d'un compte</h1>
<p>Nom :</p>
<h:inputText value="#{personBean.name}"
required="true" />
</h:inputText>

@ManagedBean
@SessionScoped
public class PersonBean
implements Serializable {
private String name;
private String fName;
public CatalogBean(){}
public String getName(){
return name;
}
public void setName(String n){
this.name = n;
}

public String createAccount(){

return "createAccountSuccess";
}

<p>Prnom :</p>
<h:inputText value="#{personBean.fName}">
<f:validateLength maximum="50"/>
</h:inputText>
<h:commandButton value="Valider"
action="#{personBean.createAccount()}" />
</h:form>
</f:view>
</h:body>

35

Dveloppement web avec Java EE

23 novembre 2010

JSF et navigation web

Configuration de la navigation (faces-config.xml)

Rgle de navigation = transition d'une vue une autre


Outcome =

Chaine de caractre reprsentant le rsultat d'un traitement


(Ex : fail, pass, success, case5, caseTruc)
Peut conditionner l'activation d'une rgle de navigation

Types de navigation

Navigation statique = navigation par identifiant de vue / outcome


Navigation dynamique =

36

Mthode d'un backing bean rendant plusieurs outcomes possibles


Rgles de navigation diffrentes suivant les outcomes

Dveloppement web avec Java EE

23 novembre 2010

JSF et navigation web


Exemple
<h:link outcome="/etape1.xhtml"
value="Aller l'tape 1"/>

<navigation-rule>
<from-view-id>/etape0.xhtml</from-view-id>
<navigation-case>
<from-outcome>step1</from-outcome>
<to-view-id>/etape1.xhtml</to-view-id>
</navigation-case>
</navigation-rule>

<h:link outcome="step1"
value="Aller l'tape 1"/>
<h:commandLink action="step1"
value="Aller l'tape 1"/>

<h:commandLink
action="#{mybean.allerEtapeSuivante()}"
value="Aller l'tape suivante" />

37

Configuration

Managed Bean
public String allerEtapeSuivante(){
if(){
return "step1";
} else if(){
return "step2";
}

return "default";
}

Dveloppement web avec Java EE

23 novembre 2010

Sessions et composants web

Session web = maintient d'un tat conversationnel


avec un client travers plusieurs couples requte / rponse

Permet de stocker des informations alors que lutilisateur change


plusieurs fois de pages web

Session JSF = session web

Mettre des donnes en sessions avec un ManagedBean


@ManagedBean
@SessionScoped
public class PersonBean implements Serializable { }

Mettre des donnes en session la main


ExternalContext ctx = FacesContext.getCurrentInstance().getExternalContext();
ctx.getSession(/true/false);
ctx.getSessionMap().put(key, value);
ctx.getSessionMap().get(key);

38

Dveloppement web avec Java EE

23 novembre 2010

Persistance des donnes

39

Dveloppement web avec Java EE

23 novembre 2010

Partie persistance de Java EE

Navigateur
web

40

Java EE
conteneur web

La phase de dveloppement avec Java EE

Serveur
de base de donnes

23 novembre 2010

Bases de donnes

Base de donnes = ensemble de tables

Table = colonnes * lignes

Colonnes = proprits
Ligne = ensemble de valeurs
pour les diffrentes proprit

Cl primaire = identifiant
unique dune ligne

Stockage persistant sur un serveur


Gestion par un SGBD
(Systme de Gestion de Base de Donnes)
41

Dveloppement web avec Java EE

23 novembre 2010

Persistance en base de donnes

Connecteur

Connecteur

Objets
Java

Lignes de
table

Objet
42

Donnes

Serveur
de base de donnes

Serveur d'applications
Java EE

Conversion

Besoin = Create + Read + Update + Delete (CRUD)


Problme = mapping relationnel / objet des donnes

Application

Relationnel
Dveloppement web avec Java EE

23 novembre 2010

Java Persistence API (JPA)

JPA = spcification dun mapping relationnel / objet


(Object Relational Mapping ORM)

Composant pour accder la base de donnes = EntityManager


Prdfini (pas besoin de lcrire)
Gnrique

Plusieurs implmentations

Composants pour stocker les donnes = EJB Entity


Langage de requtes = Java Persistence Query Language (JPQL)

EclipseLink (Oracle TopLink)


JBoss Hibernate

S'appuie sur un connecteur de base de donnes


Ex : JDBC
43

Dveloppement web avec Java EE

23 novembre 2010

Principe de JPA
Serveur de bases
de donnes

Serveur Java EE

Conversion

Objets

Application

EJB
Entity

JDBC

44

Entity
Manager

JDBC

Bean,
Vue

Dveloppement web avec Java EE

23 novembre 2010

EJB Entity

Composant persistant partag par plusieurs clients

Reprsente des donnes mtiers stockes dans une base de donnes

Une classe correspond une table


Les attributs dfinis dans la classe correspondent aux colonnes de la table
Une instance de la classe (= un objet) reprsente une ligne de la table

Possde une identit explicite (cl primaire)

EJB Entity JavaBean mais

45

Avec des annotations qui dfinissent le mapping relationnel/objet


Gestion par le conteneur (cration, cycle de vie)

Dveloppement web avec Java EE

23 novembre 2010

EJB Entity
Exemple
@Entity
@Table(name = "person")
public class Personne implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.SEQUENCE)
@Column(name = "id")
private int id;
@Basic(optional = false)
@Column(name = "name")
private String nom;
public Personne() { super(); }
public int getId() { return this.id; }
public void setId(int id) { this.id = id; }
public String getNom() { return this.nom; }
public void setNom(String nom) { this.nom = nom; }

}
46

Dveloppement web avec Java EE

23 novembre 2010

JPA et JSF
Serveur de bases
de donnes

Serveur Java EE

JDBC

Entity
Manager

Managed
Bean

JDBC

Page JSF

47

EJB
Entity

Conversion

Objets

Application

fichier. xhtml

Dveloppement web avec Java EE

23 novembre 2010

JPA et patron faade

Patron Faade = ajout dun intermdiaire


entre lapplication et lEntityManager

Managed
Bean

EJB
Session
Stateless

Entity
Manager

JDBC

Page JSF

EJB
Entity

Conversion

Objets

Application

fichier. xhtml

Dcouplage de laccs aux ressources


48

Dveloppement web avec Java EE

23 novembre 2010

Utilisation dun EJB Session Stateless


en faade

EJB Session Stateless Faade


(gnr automatiquement)

@Stateless
public class MyFacadeBean
implements Serializable {

@PersistenceContext
(unitName = "person-PU")
private EntityManager em;

@ManagedBean
public class MyMBean {
@EJB
MyFacadeBean bean;

public MyFacadeBean(){
}

public void createPersonne(String name){


Personne p = new Personne();
p.setName(name);

public void create(Personne personne) {


em.persist(personne);
}
}

Autre composant
(ManagedBean JSF, EJB)

bean.create(p);
}
}

49

Dveloppement web avec Java EE

23 novembre 2010

Application Java EE

50

Dveloppement web avec Java EE

23 novembre 2010

Application Java EE

Application = composants + mtadonnes

Composants

Distribus ou non
Diffrents types et responsabilits

Mtadonnes

Informations ncessaires la configuration ( annotations)

Informations ncessaires au dploiement ( fichiers XML)

51

Liens entre composants, paramtres


Aspects transverses : scurit, transactions

Lien avec les ressources du serveur d'applications


Lien avec les ressources accessibles depuis le serveur
Dveloppement web avec Java EE

23 novembre 2010

application.ear

Packaging
composants
mtadonnes
moduleWeb.war
moduleEJB.jar

52

Dveloppement web avec Java EE

23 novembre 2010

A vous de jouer !

53

Dveloppement web avec Java EE

23 novembre 2010

Annexes

54

Dveloppement web avec Java EE

23 novembre 2010

Source : Blog Sravan Modugula

Cycle de vie de la FacesServlet

55

Dveloppement web avec Java EE

23 novembre 2010

Enterprise JavaBeans : EJBs

Composants distribus transactionnels rutilisables et


centrs sur la logique mtier

JavaBean mais avec annotations


Gestion par le conteneur (cration, cycle de vie)
Services additionnels :

Annotations spcifiques
Transactions, persistance

Diffrents types
EJB
Message

EJB
Session

EJB
Session
Stateless
56

EJB
Session
Stateful

EJB
Entity

EJB
Session
Singleton
Dveloppement web avec Java EE

23 novembre 2010

EJB Entity
Mapping des relations

Dans la classe Table1


@OneToOne
private Table2 t2object;

Dans la classe Table3


@OneToMany(mappedBy="t3object",
cascade= {CascadeType.ALL})
private List<Table4> t4list;

Dans la classe Table4


@ManyToOne
@JoinColumn(name="table3_id")
private Table3 t3object;

Dans la classe Table5


@ManyToMany(cascade={CascadeType.ALL})
@JoinTable(name="t5_t6",
joinColumns={@JoinColumn(name="table5_id")},
inverseJoinColumns={@JoinColumn(name = "table6_id")})
private List<Table6> t6list;
57

Dveloppement web avec Java EE

23 novembre 2010

JPQL

JPQL = langage de requtes pour manipuler les entits

Query

Syntaxe SQL
Requtes excutes par lEntityManager

Encapsule une requte


Permet dobtenir les rsultats

Query q = em.createQuery(
"select p from Personne p where p.nom='robert'");
q.getSingleResult();

NamedQuery = requte prdfinie

@Entity
@Table(name = "person")
@NamedQuery(name="getPersonByName",
query="select a from Personne a
where a.name = :name")
public class Personne implements Serializable {

}
58

@PersistenceContext(unitName = "person-PU")
private EntityManager em;
public Personne getPersonneParNom(String nom) {
Query q = em.createNamedQuery("getPersonByName");
q.setParameter("name", nom);
return (Personne) q.getSingleResult();
}
Dveloppement web avec Java EE

23 novembre 2010

Scurit

Caractristiques de la scurit d'une application (DICT/P)

Intgrit et confidentialit
Autorisation (contrle d'accs) = identification + authentification

Traabilit / preuve : non rpudiation, audit


Disponibilit : qualit de service

Mcanismes mis en uvre dans Java EE

Plusieurs niveaux de scurit


Niveau application
Niveau transport
Niveau message (web services)

Plusieurs faons de scuriser


Scurit dclarative via les descripteurs de dploiement
et via les annotations
Scurit programmatique (dconseille)

59

Applicable aux composants web et aux EJBs


Dveloppement web avec Java EE

23 novembre 2010

Contrle d'accs : vocabulaire

Fondamentaux

Pour contrler laccs une application

User = informations didentit dun utilisateur


Group = ensemble d'utilisateurs
(gnralement classifis selon une caractristique commune)
Realm = ensemble d'utilisateurs et de groupes
(implment par une base de donnes, un annuaire, un fichier)
Role = privilge d'accs sur un ensemble de ressources

Role mapping = associe un rle un utilisateur / groupe pour une ressource

Une fois lutilisateur identifi et authentifi

60

Principal = information identifiant lutilisateur ( login)


Credential = information authentifiant lutilisateur ( mot de passe)
Dveloppement web avec Java EE

23 novembre 2010

Contrle daccs sur un composant web

Dfinition des rles via le fichier web.xml


<security-constraint>
<display-name>Contrainte daccs admins</display-name>
<web-resource-collection>
<web-resource-name>Ressources admins</web-resource-name>
<description>Administration du site</description>
<url-pattern>/secureAdmin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<description>Contrainte dauthentification admins</description>
<role-name>admins</role-name>
</auth-constraint>
</security-constraint>

<security-role>
<description/>
<role-name>admins</role-name>
</security-role>

61

<login-config>
<auth-method>FORM</auth-method>
<realm-name>JDBCRealm</realm-name>
<form-login-config>
<form-login-page>/login.xhtml</form-login-page>
<form-error-page>/loginError.xhtml</form-error-page>
</form-login-config>
</login-config>
Dveloppement web avec Java EE

23 novembre 2010

Contrle daccs sur un composant web

Role Mapping = correspondance utilisateur / groupe


via le fichier sun-web.xml

rle

<security-role-mapping>
<role-name>admins</role-name>
<group-name>admins</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>webusers</role-name>
<principal-name>test</principal-name>
</security-role-mapping>

62

Dveloppement web avec Java EE

23 novembre 2010