La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Fabien Sanglard – Yang Cao

Présentations similaires


Présentation au sujet: "Fabien Sanglard – Yang Cao"— Transcription de la présentation:

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


Télécharger ppt "Fabien Sanglard – Yang Cao"

Présentations similaires


Annonces Google