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

Sécurité JAVA et JAAS Fabien Sanglard – Yang Cao.

Présentations similaires


Présentation au sujet: "Sécurité JAVA et JAAS Fabien Sanglard – Yang Cao."— Transcription de la présentation:

1 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 lutilisateur. 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 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 La SandBox 1.0

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 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

11 La protection de lutilisateur

12 Quelques exemples de tout cela : - Une applet critique exécutée localement fonctionne sans problème. C:\> java WriteFileApplet

13 La 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:\>java -Djava.security.manager WriteFileApplet

14 La protection de lutilisateur Quelques exemples de tout cela : - Un outil permettant décrire facilement des fichiers « policy » : Policytool.exe

15 La 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 " >", "write"; }; java -Djava.security.manager -Djava.security.policy=all.policy WriteFileApplet

16 La 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…..

17 Java 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. Authentification Autorisation Subject Interactions

18 Java Authentification & Autorisation Comment ça marche ? 1. Authentification 1. On « branche » des modules de connexion à une entité. 2. Si lutilisateur « passe » tout ces modules, il acquière alors une identité virtuel. 2. Autorisation 1. Il peut alors tenter dexécuter des actions « critiques ». 2. Ces actions sont soumises au système de restrictions daccès.

19 JAAS : 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.

20 JAAS : 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

21 JAAS : Lauthentification (chronologie) new LoginContext("Nom de configuration", MyCallbackHandler); LoginContext Configuration Configuration.jaas (liste des modules

22 JAAS : Lauthentification (chronologie) LoginContext Configuration Configuration.jaas (liste des modules) LoginModule 1 LoginModule 2

23 JAAS : Lauthentification (chronologie) LoginContext Configuration Configuration.jaas (liste des modules) LoginModule 1 LoginModule 2 Login( ) USER CallBackHandler Login( )

24 JAAS : Lauthentification (chronologie) LoginContext LoginModule 1 LoginModule 2 Login( ) USER CallBackHandler Subject Droits.policy

25 JAAS : Lauthentification (chronologie) LoginContext LoginModule 1 LoginModule 2 Login( ) USER CallBackHandler Subject DoAsPrivileged( ) PrivilegedAction

26 Focus 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.

27 Focus sur les CallbackHandler - Le dialogue est délégué : LoginContext LoginModule CallbackHandler USE R 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 : Lauthentification 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 danalyse{ AnalyseRetineModule Required };

31 JAAS : Lauthentification Les mots clés du fichier.jaas : – Required : non bloquant – Requisite : bloquant – Sufficient : bloquant – Optional : non bloquant

32 JAAS : Lauthentification Exemple : Failed ModuleCriterionPass/Fail SampleLoginModuleRequired OK NTLoginModuleSufficient !OK SmartCardRequisite OK KerberosOptional !OK Overall authentication OK

33 JAAS : Lauthentification Exemple : Failed ModuleCriterionPass/Fail SampleLoginModuleRequired !OK NTLoginModuleSufficient OK SmartCardRequisite KerberosOptional Overall authentication OK

34 JAAS : Lauthentification Comment définir lemplacement du fichier.jaas ? – Ligne de commande : Java –Djava.security.auth.login.config= – Modification du fichier java.security : Login.config.url.1=

35 JAAS : 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.

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 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 JAAS : L autorisation Comment définir la source du fichier.policy ? – Ligne de commande : Java –Djava.security.policy= – Modification du fichier java.security : auth.policy.url1=

40 JAAS: la démo (enfin)…

41 JAAS : Mise en place Mise en place dune authentification JAAS : – Implémenter les interfaces suivants : CallBackHandler – Handle() LoginModule – initialize() – login() – commit() – Abort()

42 JAAS : Mise en place Mise en place dune authentification JAAS : – Implémenter les interfaces suivants : Principal – getName() PrivilegedAction – run()

43 Java Authentification & Autorisation Où trouver JAAS ? – API dextension pour JAVA 1.3 – Incorporé à JAVA 1.4 – Incorporé aux spécifications J2EE 1.3


Télécharger ppt "Sécurité JAVA et JAAS Fabien Sanglard – Yang Cao."

Présentations similaires


Annonces Google