Title: S
1Sécurité JAVA et JAAS
2 Plan
- Les différents aspects de la sécurité JAVA.
- Évolution de la sécurité depuis JAVA 1.0
- La protection de lutilisateur.
- La protection du système (JAAS).
- Authentification
- Autorisation
- Étude détaillé
- Démo
3La sécurité JAVA.
- Aspect fondamentale, dès la première version.
- Principe de Sand-Box.
- Évolution gt Granularité très fine
- Définition de stratégies de sécurité.
4La sécurité JAVA.
- Nouveaux dans JDK 1.4
- JCE 1.2 (Java Cryptography Extension).
- JSSE (Java Secure Socket Extension).
- JAAS (Java Authentification Autorisation
Service).
5Évolution de la sécurité JAVA
- JAVA 1.0 (1995)
- But Protéger lutilisateur du système.
- Concernait principalement les applets.
- Apparition du principe SandBox .
- Un code non approuvé est limité
- Pas daccès aux systèmes de fichiers.
- Pas daccès réseaux.
6Évolution de la sécurité JAVA
7Évolution de la sécurité JAVA
- JAVA 1.1 (1996)
- Raffinement du modèle de SandBox.
- Possibilité de signer une applet.
- Le code approuvé possède alors les même droits
quun code local. - Problème Violation du principe du moindre
privilège .
8Évolution de la sécurité JAVA
9Évolution de la sécurité JAVA
- JAVA 1.2 (1997)
- Évolution majeur en terme de sécurité
- Possibilité de définir une politique de sécurité
par lintermédiaire des fichiers policy .
10Évolution de la sécurité JAVA
11La protection de lutilisateur
12La protection de lutilisateur
- Quelques exemples de tout cela
- Une applet critique exécutée localement
fonctionne sans problème.
C\gt java WriteFileApplet
13La protection de lutilisateur
- Quelques exemples de tout cela
- Une applet critique exécutée localement
fonctionne sans problème. - Si on ajoute un Security Manager , rien ne va
plus.
C\gtjava -Djava.security.manager WriteFileApplet
14La protection de lutilisateur
- Quelques exemples de tout cela
- - Un outil permettant décrire facilement des
fichiers policy Policytool.exe
15La protection de lutilisateur
- Quelques exemples de tout cela
- Avec un fichier de configuration, le
SecurityManager ne pose plus de problème.
grant permission java.io.FilePermission
"ltltALL FILESgtgt", "write"
java -Djava.security.manager -Djava.security.polic
yall.policy WriteFileApplet
16La protection de lutilisateur
- Quelques exemples de tout cela
- Un dernier exemple avec un browser.
- Il est plus difficile de spécifier le fichier
policy à utiliser..
17Java Authentification Autorisation
- But
- Protéger le système de lutilisateur.
- Comment
- Créer un objet partagé par lauthentification et
lautorisation. - Étendre le modèle de sécurité standard ( security
policy) pour gérer cet objet.
18Java Authentification Autorisation
- Comment ça marche ?
- Authentification
- On branche des modules de connexion à une
entité. - Si lutilisateur passe tout ces modules, il
acquière alors une identité virtuel. - Autorisation
- Il peut alors tenter dexécuter des actions
critiques . - Ces actions sont soumises au système de
restrictions daccès.
19JAAS Lauthentification
- Les classe importantes pour lidentification
- Subject
- Représente un individu ou une organisation avec
plusieurs identités de principale.
Lauthentification consiste à authentifier un
sujet, tandis que les décisions en matières
dautorisation sont prises en fonction dun sujet
authentifié. - Logincontext
- Fournit une API de base, permettant aux sujets de
se connecter/déconnecter du système. - LoginModule
- Définit linterface que les fournisseurs de
services dauthentifications qui supportent JAAS
doivent implémenter. - Configuration
- Encapsule lentité utilisée pour configurer une
application avec des connexion particulièrs.
20JAAS Lauthentification
- Les classe importantes pour lidentification
- CallbackHandler
- Définit linterface à implémenter par les
applications qui souhaitent autoriser le service
dauthentification à leur passer des
informations. - Callback
- Définit une interface de marqueurs implémentée
par les objets qui sont passés à une
implémentation CallbackHandler. Lobjet Callback
contient les données à passer à lapplication. - PrivilegedAction
- Les actions critiques y sont stockées
21JAAS Lauthentification (chronologie)
LoginContext
Configuration
new LoginContext( "Nom de configuration",
MyCallbackHandler)
22JAAS Lauthentification (chronologie)
LoginContext
Configuration
LoginModule 1
LoginModule 2
23JAAS Lauthentification (chronologie)
LoginContext
Configuration
Login( )
LoginModule 1
Login( )
USER
CallBackHandler
Login( )
LoginModule 2
24JAAS Lauthentification (chronologie)
LoginContext
Login( )
LoginModule 1
USER
CallBackHandler
LoginModule 2
Subject
Droits.policy
25JAAS Lauthentification (chronologie)
LoginContext
Login( )
LoginModule 1
USER
CallBackHandler
LoginModule 2
Subject
DoAsPrivileged( )
PrivilegedAction
26Focus sur les CallbackHandler
- Le but de lauthentification est de créer un
objet Subject . - Plusieurs attributs doivent être remplies
- Principals Noms du sujet
- publicCredentials informations publics (
publicPassword) - privateCredentials informations privées (
privtePassword) - Pour communiquer, les objects utilisent des
Callback. - Ces Callback sont gérés par les CallbackHandler.
27Focus sur les CallbackHandler
- - Le dialogue est délégué
28Focus sur les CallbackHandler
- Les callback sont utilisés pour compléter le
Subject .
29Focus sur les Callback
- Les differents types de Callbacks
- Language Callback
- Name Callback
- Password Callback
- TextInput Callback
- TextOutput Callback
- Choice Callback
- Confirmation Callback
30JAAS Lauthentification
- Le fichier de configuration des modules de
connexion - configuration.jaas
- Nom de configuration
- JndiLoginModule Requisite
- Krb5LoginModule Sufficient
- NTLoginModule Optional
- UnixLoginModule Optional
- SampleLoginModule Required debugtrue
-
- Autre type danalyse
- AnalyseRetineModule Required
31JAAS Lauthentification
- Les mots clés du fichier .jaas
- Required non bloquant
- Requisite bloquant
- Sufficient bloquant
- Optional non bloquant
32JAAS Lauthentification
Failed
33JAAS Lauthentification
Failed
34JAAS Lauthentification
- Comment définir lemplacement du fichier .jaas ?
- Ligne de commande
- Java Djava.security.auth.login.configltlocationgt
- Modification du fichier java.security
- Login.config.url.1ltlocationgt
35JAAS L autorisation
- Une fois lutilisateur reconnu...
- JAAS étend le modèle de sécurité JAVA2.
- On définit donc une politique de sécurité pour un
utilisateur spécifique ou pour un domaine.
36JAAS L autorisation
- Pour cela, on utilise des fichiers .policy
- Exemple
- grant Principal Administrateur "root"
- permission java.util.PropertyPermission
"java.home", "read" - permission java.util.PropertyPermission
"user.home", "read" - permission java.io.FilePermission
"c\\foo.txt", "write,read" -
- grant Principal Etudiant
- permission java.io.FilePermission "c\\foo.txt",
"read" -
37JAAS L autorisation
- Une fois identifié, le Subject utilise des
PrivilegedAction . - On lance le traitement avec la méthode static
suivante
Static Subject.doAsPrivileged(SujetCourant s,
PrivilegeAction x)
38JAAS L autorisation
public class SampleAction implements
PrivilegedAction public Object run()
try FileWriter writer new FileWriter(new
File("c/foo.txt")) writer.write("blabla
") catch (IOException ioe) return
null
39JAAS L autorisation
- Comment définir la source du fichier .policy ?
- Ligne de commande
- Java Djava.security.policyltlocationgt
- Modification du fichier java.security
- auth.policy.url1ltlocationgt
40JAAS la démo (enfin)
41JAAS Mise en place
- Mise en place dune authentification JAAS
- Implémenter les interfaces suivants
- CallBackHandler
- Handle()
- LoginModule
- initialize()
- login()
- commit()
- Abort()
42JAAS Mise en place
- Mise en place dune authentification JAAS
- Implémenter les interfaces suivants
- Principal
- getName()
- PrivilegedAction
- run()
43Java Authentification Autorisation
- Où trouver JAAS ?
- API dextension pour JAVA 1.3
- Incorporé à JAVA 1.4
- Incorporé aux spécifications J2EE 1.3