Java Authentication And Authorization Service API Master Seminar

JAAS
Java Authentication And Authorization Service API
R´esum´e
Avant Jaas (Java Authentication and Authorization Service) API, la s´ecurit´e en
Java ´etait con¸cue seulement pour prot´eger l’utilisateur du monde ext´erieur. Cette pro-
tection repose sur la Java sandbox dont le role est de prot´eger le syst`eme local des
programmes hostils venant de l’ext´erieur. D’autres m´ecanismes et outils tels que les
signatures digitales et le cryptage assurent respectivement l’int´egrit´e des donn´ees et la
confidentialit´e des messages. JAAS offre des m´ecanismes suppl´ementaires qui exigent
des permissions explicites pour chaque utilisateur avant de pouvoir ex´ecuter certaines
op´erations. L’API permet d’int´egrer aux applications l es m´ecanismes de s´ecurit´e stan-
dards d´ej`a existants comme Solaris NIS (Network Information Services), Windows NT,
LDAP (lightweight access directory protocol) ou Kerberos. Cette inegration se fait
d’une mani`ere transparente et configurable. JAAS est donc une couche entre l’applica-
tion et les autres ´el´ements de s´ecurit´e de Java. En se basant sur un exemple simple, le
pr´esent article montre comment configurer et utiliser JAAS.
Master Seminar
Advanced Software Engineering Topics
Prof. Jacques Pasquier-Rocha
University of Fribourg, Switzerland
Department of Informatics
Software Engineering Group
Author: Matthias Buchs
matthias.buc[email protected]
Supervisor: Ghita Kouadri Most´efaoui
May 22, 2003
TABLE DES MATI `
ERES 1
Table des mati`eres
1 JAAS, Vue d’ensemble 2
2 Programmation avec JAAS 4
2.1 Login......................................... 4
2.1.1 LoginContext ................................ 4
2.1.2 Subject ................................... 4
2.2 Codeutilisateur................................... 5
2.3 AdministrationJAAS................................ 5
2.3.1 Configuration des modules login . . . . . . . . . . . . . . . . . . . . . . 5
2.3.2 FichiersdePolice.............................. 7
2.3.3 Ex´ecuterlexemple ............................. 8
2.4 Programmation JAAS avanc´ee . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.4.1 JAASCallbacks............................... 9
2.4.2 Ecrire un module login . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
3 D´eroulement d’un Login 12
4 Conclusion 14
A JAASSimple 15
A.1 LoginAction.java .................................. 15
A.2 SimpleClient.java .................................. 16
A.3 java.policy...................................... 17
A.4 jaas.policy...................................... 17
A.5 JaasDemo.cong .................................. 17
B JAASGUI 18
B.1 GUIClient.java ................................... 18
B.2 GUILoginModule.java ............................... 19
B.3 GUICallbackHandler.java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
B.4 NamePrincipal.java................................. 22
B.5 InputFrame.java................................... 23
1 JAAS, VUE D’ENSEMBLE 2
1 JAAS, Vue d’ensemble
Cet article est bas´e sur un article online de ”Java World” [3], et sur le chapitre corres-
pondant du livre ”Java Security” [1, chap. 15].
Une application utilisant JAAS fonctionne comme suit:
1. Le programme demande `a l’utilisateur de se logger et obtient un objet login.
En terme de code c’est facile: Il suffit de cr´eer une instance de LoginContext et d’in-
voquer la m´ethode login() sur cet objet.
L’administrateur du syst`eme est responsable pour les fichiers de configuration. Il peut
d´eterminer ce qui se passe quand un utilisateur veut se logger. Cela se fait avec une liste
de modules login. Chaque module peut ˆetre optionnel ou obligatoire. L’administrateur
peut aussi configurer les param`etres de l’authentification. L’utilisateur doit par exemple
ins´erer un mot de passe Windows NT correct.
2. Le programme ex´ecute une m´ethode (doAs() ou doAsPrivileged()) avec l’objet de
login et le code qui doit ˆetre ex´ecut´e au nom de l’utilisateur comme param`etres.
3. Des parties du code de l’utilisateur sont en g´en´eral sensibles pour la s´ecurit´e du syst`eme
(p. ex. lire des fichiers ou ´etablir des connexions r´eseau). Elles ´exigent donc des permis-
sions sp´ecifiques. Celles-ci sont donn´ees `a un utilisateur authentifi´e.
La figure Fig:1 illustre l’architecture d’authentification de JAAS. Le code de la couche
application communique surtout avec LoginContext. C’est ce dernier qui s’occupe du pro-
cessus login. Pour cel`a il utilise un ou plusieurs modules login. Ces modules peuvent faire
leur login utilisant des services existants comme des bases de donn´ees (Rdbms), un server
LDAP (Jndi, Java Naming and Directory Interface), l’environement (nom d’utilisateur, id
du groupe d’utilisateur etc.) du syst`eme d’exploitation (Unix WinNT) ou des p´erif´eriques
comme l’authentification biom´etrique.
Il est important de constater qu’avec JAAS on a deux sortes de fichiers de police. Le
code qui ex´ecute l’authentification `a besoin des permissions, qui peuvent changer d’apr`es le
module login. Le code qui est ex´ecut´e au nom d’un utilisateur aura d’autres permissions en
g´en´erale plus restreintes.
Le programmeur fait deux choses utilisant JAAS: Il doit appeler la m´ethode login() pour
authentifier l’utilisateur et ex´ecuter du code au nom de l’utilisateur. L’administrateur doit
configurer un ensemble de modules login, configurer un ensemble de fichiers de police JAAS
et installer l’environnement du programme correctement.
Dans les prochaines sections nous allons voir comment utiliser et configurer JAAS avec un
exemple simple. Un nom et un mot de passe sont demand´es d’un utilisateur via une fenˆetre.
Si ces donn´ees sont correctes l’utilisateur pourra voir quelques propri´et´es de l’environement
et le contenu du r´epertoir courant. Dans le cas d’echec de l’authentification ces action ne
seront pas autoris´ees.
1 JAAS, VUE D’ENSEMBLE 3
Fig. 1 – Architecture d’authentification de JAAS (tir´e de [3])
2 PROGRAMMATION AVEC JAAS 4
try {
// Create a Login Conte xt fo r t h e a p p l i c a t i o n ” JaasGUI ” .
// Use GUICall ba ckHandl er t o o b t a i n us er l o g i n i n fo r ma t io n .
LoginContext lc = new LoginContext(JaasGUI,
new GUICallbackHandler ( ) ) ;
// Log i n t h e u s e r .
l c . l o g i n ( ) ;
// Perform L ogin Act ion as t he a u t h e n t i c a t e d us er .
S u bj ec t . d o As P r iv i l eg e d ( l c . g e t S u b j e c t ( ) , new LoginAction () , null ) ;
// Log o ut t h e u s e r .
l c . l o g o u t ( ) ;
}catch ( Lo ginException ex ) {
. . .
}
Listing 1: Code pour le login et l’ex´ecution d’une action privil´egi´ee.
2 Programmation avec JAAS
Un programme qui utilise JAAS est divis´e en deux parties: le code pour le login et le code
pour l’action propre `a l’utilisateur.
2.1 Login
Listing 1 montre ce qu’il faut faire pour authentifier un utilisateur et ex´ecuter du code
au nom de cet utilisateur: Premi`erement il faut cr´eer un objet de type LoginContext. Cet
objet est utilis´e pour logger un utilisateur. Si tout va bien on peut ex´ecuter du code au nom
de l’utilisateur connect´e . Pour finir il faut faire un logout.
2.1.1 LoginContext
Les deux premi`eres activit´es utilisent la classe LoginContext (javax.security.auth.-
login.LoginContext). Une instance de cette classe repr´esente un contexte pour authentifier
un utilisateur. Le d´eroulement de cette authentification est sp´ecifi´e dans un fichier de confi-
guration. Le premier argument du constructeur d´efinit quel bloc d’instructions dans le fichier
de configuration doit ˆetre pris.
Quelques types de configurations ont besoin de ”Callback”s. Par exemple pour demander le
nom et le mot de passe d’un utilisateur (Ce qui est le cas dans notre exemple). Apr`es un
login correct on peut obtenir un objet de type Subject.
2.1.2 Subject
La classe Subject (javax.security.auth.Subject) est utilis´ee pour repr´esenter un uti-
lisateur authentifi´e. Chaque utilisateur est repr´esent´e par un tableau d’objets Principal qui
est encapsul´e par cette classe. Un tableau est utilis´e parce que un utilisateur peut ˆetre identifi´e
par plusieurs characteristiques. Des exemples sont le num´ero AVS ou un nom de compte SUN
Solaris ou Windows NT. Un principal repr´esente donc une propri´et´e d’un utilisateur. Toutes
1 / 26 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !