EJB 3.0 sécurisés et Java Web Start
Date de publication : 21/11/2007
Introduction à la sécurité des EJB 3.0 en utilisant un client Swing démarré avec Java Web Start grace à Glassfish.
0. EJB 3.0 sécurisés et application client Java Web Start
Une option de Glassfish est la possibilité de démarrer une application
client à partir du serveur avec Java Web Start.
Associé avec NetBeans, il est facile de créer une application sécurisée aisément distribuable.
0-A. Préparation
Ce tutoriel est basé sur NetBeans. Vérifiez que vous avez un serveur GlassFish enregistré (ou le serveur Sun Java System Application Server version 9 inclus dans JavaEE 5 SDK).
Pour ajouter un serveur utilisez le menu Tools -> Server Manager et ajoutez votre serveur GlassFish ou Sun Java System Application 9.
I. Création du projet
Créez un nouveau projet en cliquant sur le bouton New Project et sélectionnez Enterprise, Projects -> Enterprise Application et cliquez Next.
Dans la fenêtre 'Name and Location', saisissez le nom du projet, par exemple Login,
votre serveur avec le serveur GlassFish ou le serveur Sun Java System Application Server, la version Java avec Java EE 5 et sélectionnez Create EJB Module,
désélectionnez Create Web Application Module, sélectionnez Create Application Client Module.
Laissez les valeurs par défaut pour les noms de module et pressez Finish.
II. Créer un EJB
Pour créer un EJB sans état, cliquez avec le bouton droit sur Login-ejb -> New -> Session Bean.
Remplissez le nom de l'EJB avec Calculator, le package avec demo, sélectionnez Remote et désélectionnez Local. Laissez stateless sélectionné.
II-A. Créer la méthode add
Dans le source CalculatorBean.java, cliquez avec le bouton droit -> EJB Methods -> Add Business Method.
Nommez la méthode 'add' avec int en tant que type retourné et ajoutez 2 paramètres a et b en tant que type int. Cliquez OK.
Remplacez
par
II-B. Créer la méthode hello
Répétez la même démarche pour ajouter une méthode une méthode métier (business method) 'hello' avec un type String en retour
et un type String pour le paramétre que nous nommerons 'name'.
Remplacez
par
II-C. Ajouter les annotations de sécurité
Le but est simplement de limiter l'accès à la méthode hello tout en laissant la méthode add non sécurisée.
Avant @Stateless, ajoutez une annotation pour déclarer le rôle admin. Insérez la ligne :
Avant la méthode hello, ajoutez une annotation pour restreindre l'accès de la méthode au rôle "admin":
Le source de l'EJB doit ressembler à cela:
package demo;
import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed;
import javax.ejb.Stateless;
@author
@DeclareRoles("admin")
@Stateless
public class CalculatorBean implements CalculatorRemote {
public CalculatorBean() {
}
public int add(final int a, final int b) {
return a + b;
}
@RolesAllowed("admin")
public String hello(final String name) {
return "Hello " + name;
}
}
|
III. Le code client
Ouvrez le noeud Login-app-client dans projets, ouvrez Source Package, login et double cliquez sur Main.java.
Cliquez avec le bouton droit dans le source, sélectionnez Entreprise Resources -> Call Enterprise Bean et sélectionnez CalculatorBean.
Pressez OK. La ligne pour référencer le bean est automatiquement ajoutée:
@EJB
private static CalculatorRemote calculatorBean;
Add the lines below to call the methods:
javax.swing.JOptionPane.showMessageDialog(null, "2 + 2 = " + calculatorBean.add(2, 2));
javax.swing.JOptionPane.showMessageDialog(null, calculatorBean.hello("Mr admin"));
|
Résolvez les imports (pressez Alt+Maj+F NB 5.5 ou Alt+Maj+I NB 6.0). Le source doit ressembler à cela:
package login;
import demo.CalculatorRemote;
import java.rmi.RemoteException;
import javax.ejb.EJB;
@author
public class Main {
@EJB
private static CalculatorRemote calculatorBean;
public Main() {
}
@param
public static void main(String[] args) {
javax.swing.JOptionPane.showMessageDialog(null, "2 + 2 = " + calculatorBean.add(2, 2));
javax.swing.JOptionPane.showMessageDialog(null, calculatorBean.hello("Mr admin"));
}
}
|
III-A. Lancer le client
Le code peut déjà être exécuté. Pressez le bouton Run, le projet est déployé puis lancé.
Vous allez obtenir une fenêtre de login:
Entrez n'importe quel code client et mot de passe, le projet va se terminer en echec car nous n'avons pas défini d'utilisteur.
III-B. Créer les utilisateurs
Dans l'onglet Runtime (ou service avec NB 6.0), ouvrez le noeud Servers et sélectionnez View Admin Console.
NetBeans va ouvrir automatiquement le navigateur sur la page pour se logger sur le serveur.
Entrez le code administrateur et le mot de passe que vous avez fourni lors de l'installation.
Sélectionnez Configuration -> Security -> Realms -> file et cliquez Manage Users.
Cliquez New pour créer 2 nouveaux utilisateurs, un dans le groupe user, l'autre dans le groupe admin.
Dand mon exemple, l'utilisateur demo est dans le groupe admin et l'utilisateur user est dans le groupe user.
III-C. Rôle mapping
Pour associer les noms de rôle, ouvrez dans l'onglet project le projet Login-> Configuration Files et double cliquez sur sun-application.xml.
Cliquez sur Edit As XML et remplacez par :
<sun-application>
<security-role-mapping>
<role-name>user</role-name>
<group-name>user</group-name>
</security-role-mapping>
<security-role-mapping>
<role-name>admin</role-name>
<group-name>admin</group-name>
</security-role-mapping>
</sun-application>
|
Relancez l'application, entrez l'utilisateur demo et le mot de passe, vous devrez voir deux fenêtres:
Si vous essayez avec un autre utilisateur en dehors du groupe admin, vous ne verrez que la première fenêtre et l'application génèrera une erreur.
Note: avec NB 5.5.1, il faut mettre fin au programme aprés son exécution. Pour cela, sélectionnez l'onglet Runtime, ouvrez le noeud Processes,
cliquez avec le bouton droit sur Login (Run) et sélectionnez Terminate Process.
IV. Démarrer avec Java Web Start
Si vous ouvrez votre navigateur et entrez l'adresse http://localhost:8080/Login/Login-app-client , l'application va démarrer automatiquement.
Cela conclu la démo et donne un aperçu de la puissance de NetBeans et GlassFish. Ces produits sont faciles d'utilisation, bien conçus, efficace et conçus pour des solutions d'entreprise.
Associé à la puissance des annotations de Java EE 5, vous pouvez construire une solution sans maux de tête.


Copyright © 11/09/2007 Patrice Secheresse. Aucune reproduction, même partielle, ne peut être faite
de ce site et de l'ensemble de son contenu : textes, documents, images, etc
sans l'autorisation expresse de l'auteur.
Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E
de dommages et intérêts.
Cette page est déposée à la
SACD.