Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
Fabien Sanglard – Yang Cao
Sécurité JAVA et JAAS Fabien Sanglard – Yang Cao
2
Plan Les différents aspects de la sécurité JAVA.
Évolution de la sécurité depuis JAVA 1.0 La protection de l’utilisateur. La protection du système (JAAS). Authentification Autorisation Étude détaillé Démo
3
La sécurité JAVA. Aspect fondamentale, dès la première version.
Principe de Sand-Box. Évolution => Granularité très fine: Définition de stratégies de sécurité.
4
La 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
But : Protéger l’utilisateur du système. Concernait principalement les applets. Apparition du principe « SandBox » . Un code non approuvé est limité Pas d’accès aux systèmes de fichiers. Pas d’accès réseaux.
6
Évolution de la sécurité JAVA
La SandBox 1.0
7
Évolution de la sécurité JAVA
Raffinement du modèle de SandBox. Possibilité de «signer» une applet. Le code approuvé possède alors les même droits qu’un 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
Évolution majeur en terme de sécurité Possibilité de définir une politique de sécurité par l’intermédiaire des fichiers « policy ».
10
Évolution de la sécurité JAVA
11
La protection de l’utilisateur
12
La protection de l’utilisateur
Quelques exemples de tout cela : Une applet critique exécutée localement fonctionne sans problème. C:\> java WriteFileApplet
13
La protection de l’utilisateur
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:\>java -Djava.security.manager WriteFileApplet
14
La protection de l’utilisateur
Quelques exemples de tout cela : - Un outil permettant d’écrire facilement des fichiers « policy » : Policytool.exe
15
La protection de l’utilisateur
Quelques exemples de tout cela : Avec un fichier de configuration, le SecurityManager ne pose plus de problème. grant { permission java.io.FilePermission "<<ALL FILES>>", "write"; }; java -Djava.security.manager -Djava.security.policy=all.policy WriteFileApplet
16
La protection de l’utilisateur
Quelques exemples de tout cela : Un dernier exemple avec un browser. Il est plus difficile de spécifier le fichier « policy » à utiliser…..
17
Java Authentification & Autorisation
But : Protéger le système de l’utilisateur. Comment : Créer un objet partagé par l’authentification et l’autorisation. Étendre le modèle de sécurité standard ( security policy) pour gérer cet objet. Authentification Autorisation Subject Interactions
18
Java Authentification & Autorisation
Comment ça marche ? Authentification On « branche » des modules de connexion à une entité. Si l’utilisateur « passe » tout ces modules, il acquière alors une identité virtuel. Autorisation Il peut alors tenter d’exécuter des actions « critiques ». Ces actions sont soumises au système de restrictions d’accès.
19
JAAS : L’authentification
Les classe importantes pour l’identification: Subject: Représente un individu ou une organisation avec plusieurs identités de principale. L’authentification consiste à authentifier un sujet, tandis que les décisions en matières d’autorisation sont prises en fonction d’un sujet authentifié. Logincontext: Fournit une API de base, permettant aux sujets de se connecter/déconnecter du système. LoginModule: Définit l’interface que les fournisseurs de services d’authentifications qui supportent JAAS doivent implémenter. Configuration: Encapsule l’entité utilisée pour configurer une application avec des connexion particulièrs.
20
JAAS : L’authentification
Les classe importantes pour l’identification: CallbackHandler: Définit l’interface à implémenter par les applications qui souhaitent autoriser le service d’authentification à 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. L’objet Callback contient les données à passer à l’application. PrivilegedAction: Les actions critiques y sont stockées
21
JAAS : L’authentification (chronologie)
LoginContext Configuration Configuration.jaas (liste des modules new LoginContext( "Nom de configuration", MyCallbackHandler);
22
JAAS : L’authentification (chronologie)
LoginContext Configuration Configuration.jaas (liste des modules) LoginModule 1 LoginModule 2
23
JAAS : L’authentification (chronologie)
LoginContext Configuration Configuration.jaas (liste des modules) Login( ) Login( ) LoginModule 1 USER CallBackHandler Login( ) LoginModule 2
24
JAAS : L’authentification (chronologie)
LoginContext Login( ) LoginModule 1 USER CallBackHandler LoginModule 2 Subject Droits.policy
25
JAAS : L’authentification (chronologie)
LoginContext Login( ) LoginModule 1 USER CallBackHandler LoginModule 2 Subject DoAsPrivileged( ) PrivilegedAction
26
Focus sur les CallbackHandler
Le but de l’authentification 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.
27
Focus sur les CallbackHandler
- Le dialogue est délégué : LoginContext LoginModule CallbackHandler USER CallBack[]
28
Focus sur les CallbackHandler
Les callback sont utilisés pour compléter le « Subject ». LoginContext LoginModule CallbackHandler CallBack[] Subject GetSubject()
29
Focus sur les Callback Les differents types de Callbacks :
Language Callback Name Callback Password Callback TextInput Callback TextOutput Callback Choice Callback Confirmation Callback
30
JAAS : L’authentification
Le fichier de configuration des modules de connexion: configuration.jaas Nom de configuration { JndiLoginModule Requisite Krb5LoginModule Sufficient NTLoginModule Optional UnixLoginModule Optional SampleLoginModule Required debug=true; }; Autre type d’analyse{ AnalyseRetineModule Required
31
JAAS : L’authentification
Les mots clés du fichier .jaas : Required : non bloquant Requisite : bloquant Sufficient : bloquant Optional : non bloquant
32
JAAS : L’authentification
Failed JAAS : L’authentification Exemple : Module Criterion Pass/Fail SampleLoginModule Required OK NTLoginModule Sufficient !OK SmartCard Requisite Kerberos Optional Overall authentication
33
JAAS : L’authentification
Failed JAAS : L’authentification Exemple : Module Criterion Pass/Fail SampleLoginModule Required !OK NTLoginModule Sufficient OK SmartCard Requisite Kerberos Optional Overall authentication
34
JAAS : L’authentification
Comment définir l’emplacement du fichier .jaas ? Ligne de commande : Java –Djava.security.auth.login.config=<location> Modification du fichier java.security : Login.config.url.1=<location>
35
Une fois l’utilisateur reconnu...
JAAS : L’ autorisation Une fois l’utilisateur 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.
36
JAAS : 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";
37
Static Subject.doAsPrivileged(SujetCourant s, PrivilegeAction x);
JAAS : 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);
38
JAAS : L’ autorisation Exemple :
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; }
39
Comment définir la source du fichier .policy ?
JAAS : L’ autorisation Comment définir la source du fichier .policy ? Ligne de commande : Java –Djava.security.policy=<location> Modification du fichier java.security : auth.policy.url1=<location>
40
JAAS: la démo (enfin)…
41
Mise en place d’une authentification JAAS :
JAAS : Mise en place Mise en place d’une authentification JAAS : Implémenter les interfaces suivants : CallBackHandler Handle() LoginModule initialize() login() commit() Abort()
42
Mise en place d’une authentification JAAS :
JAAS : Mise en place Mise en place d’une authentification JAAS : Implémenter les interfaces suivants : Principal getName() PrivilegedAction run()
43
Java Authentification & Autorisation
Où trouver JAAS ? API d’extension pour JAVA 1.3 Incorporé à JAVA 1.4 Incorporé aux spécifications J2EE 1.3
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.