Java Authentification et Autorisation Service Najla Farah UJF/ISTG/RICM3 Année Universitaire
03/06/2015 JAAS 2 JAAS ? nStandard dans JDK 2.1 nAuthentification: Pour vérifier l ’identité de celui qui exécute le code. nAutorisation: Pour contrôler l ’accès à l ’exécution.
03/06/2015 JAAS 3 JAAS ? QUI? Code Signature
03/06/2015 JAAS 4 Sommaire nSécurité dans JAVA. nSécurité avec JAAS. nExemple sur JAAS.
03/06/2015 JAAS 5 Cycle de vie du code java 1. Chargement du bytecode 2. Vérification du bytecode 3. Exécution du Bytecode 4. Ramasse-miette 0. Référence à un bloc de code
03/06/2015 JAAS 6 Sécurité dans Java. Applic Exécution Compilateur Langage
03/06/2015 JAAS 7 Sécurité du langage. nLa sécurité au niveau du langage: Syntaxe et sémantique strictes. Encapsulation des données. Spécification du langage. Gestion des types. Vérificateur de bytecode.
03/06/2015 JAAS 8 Sécurité du compilateur. nLa sécurité au niveau compilateur: Contrôle d ’accès. Valeur initiale des variables. Accès des registres. Passage des paramètres.
03/06/2015 JAAS 9 Sécurité à l ’exécution. nLa sécurité à l ’exécution: Le chargeur de classes: Exactitude des références. Ramasse miettes: Gestion structurée de la mémoire. Gestionnaire de sécurité: Élaboration des restrictions.
03/06/2015 JAAS 10 Sécurité des applications. nLa sécurité des applications: Apple: Classe chargée par le navigateur Web. Signature des applet.
03/06/2015 JAAS 11 Sécurité JDK 1.1 JVM Gestionnaire de sécurité Code local Je fais ce que je veux! Bac-à sable Coincé! Code distant autres « trusted » Ressources Système
03/06/2015 JAAS 12 Sécurité JDK 1.2 JVM Gestionnaire de sécurité Bac-à sable Code local ou distant (signé ou pas) ClassLoader Règles de sécurité Pas de notion de code à confiance implicite Chaque programme a des permissions différentes Ressources Système
03/06/2015 JAAS 13 Domaines de protection. Domaine système App-1 App-3 App-n App-2 I/O réseau I/O fich. awt Imprimante
03/06/2015 JAAS 14 Permissions. d.class c.class b.class a.class Domaine de Protection A Permissions Domaine de Protection B Permissions Classes en cours d ’exécution Politique de sécurité
03/06/2015 JAAS 15 Contrôleur d ’accès Base de règles pour le site Base de règles par utilisateur et par installation Autorité de certification
03/06/2015 JAAS 16 Signature du code Signature Chiffre Objet d ’origine Résumé
03/06/2015 JAAS 17 Authentification Identités? Java VM Mot de passe Références Clé de chiffrement Mesures biométriques
03/06/2015 JAAS 18 Les concepts(1). nPrincipal: entité à laquelle sont accordées des permissions. n Code Source: identifie un code par URL,une signature. n ProtectionDomain: ensembles de classes provenant d ’une même code source et ayant les mêmes permissions. n SecurityPolicy: un fichier de configuration qui contient: Une entrée « Keystore »:base de données des clés. Une entrée « grant »:spécification des permissions d ’une source de code
03/06/2015 JAAS 19 Les concepts(2) nSecurityClassLoader et ClassLoader: interroge la politique de sécurité pour déterminer les permissions. Charge le code dans JVM en lui associant les permissions. n SecurityManager: implémente le système de sécurité. n AccessController: gère les permissions. nAccessControlContext: représente les permissions qu’une méthode exerce si elle est appelée par un thread.
03/06/2015 JAAS 20 SecurityPolicy JAVA nSpécification des permissions d ’une source de code grant CodeBase « file:c:/java/code/sample.jar »{ permission java.io.FilePermission « c:\\user\\testuser\\-,« read » }; grant CodeBase « », Signedby « bob »{ Permisson java.lang.RuntimePermission « createClassLoader »; Permisson java.net.SocketPermision « * », « connect,accept,resolve »; };
03/06/2015 JAAS 21 Sommaire nSécurité dans JAVA. nSécurité avec JAAS. nExemple sur JAAS.
03/06/2015 JAAS 22 JAAS nJAAS augmente la granularité de la sécurité en se basant sur l’authentification de l ’exécuteur du code. nJAAS augmente les privilèges de cet utilisateur authentifié en lui accordant les autorisations adéquates.
03/06/2015 JAAS 23 Architecture de JAAS Applications API Java 2 - Principal - Access Controller - Access Controller Context - Policy -Protection Domain JAAS - Subject - Login Context - Login Module - Policy
03/06/2015 JAAS 24 Authentification nCréation du login: LoginContext ctx = new LoginContext(« SimpleLogin »); n Authentification du sujet: ctx.login(); n Association du login au sujet si authentification réussie: Subject subj = ctx.getSubject();
03/06/2015 JAAS 25 Autorisation nSi authentification réussie Jaas autorise l ’accès au sujet authentifié : Subject.doAs(subj,new PrivilegedAction()){}
03/06/2015 JAAS 26 SecurityPolicy JAAS nLa politique de sécurité est lié à un rôle d ’un sujet: Grant Principal sample.SamplePrincipale »testuser »{ permission java.io.FilePermission « c:\\user\\testuser\\-, « read » }; CodeBase « file:c:/java/code/sample.jar », Signedby « charles »{ permission java.io.FilePermission « c:\\user\\testuser\\-, « read » };
03/06/2015 JAAS 27 Implémentation de JAVA - Dans chaque objet il y a une SecutityPolice: Policy.getPolicy() - La ClassLoader associe les permissions à chaque classe: Policy.getPolicy().getPermissions(codesource) - Le SecutityManager gère les permissions: cl.getprotectionDomain().getPermissions().implies(req uestedPermission)
03/06/2015 JAAS 28 Implémentation de JAAS - Dans chaque objet il y a une SecutityPolice: javax.security.auth.Policy.getPolicy(); - Avec la méthode doAs: - on associe les permissions au sujet: Policy.getPolicy().getPermissions(subj,codesource); - on associe le sujet à AccessControlContext: javax.security.auth.SubjectDomainCombiner.combine();
03/06/2015 JAAS 29 Applications Login Context API Login Module SPI Smart CardKerberosBiometric Configuration
03/06/2015 JAAS 30 Sommaire nSécurité dans JAVA. nSécurité avec JAAS. nExemple sur JAAS: SmartCard
03/06/2015 JAAS 31 SmartCard nPortable nSécurisée nPersonnelle
03/06/2015 JAAS 32 login module nAvec « login » LoginContext appelle ces méthodes qui sont implémentées dans loginModule: 1-Void initialize(…) 2- booléen login() 3- booléen commit() 4-booléen abort() 5-booléen logout()
03/06/2015 JAAS 33 void initialize(…) nDonne une référence : Sur le sujet qui sera attaché à un principal en cas de succès d ’authentification. Sur CallBackHandler Options sur la configuration.
03/06/2015 JAAS 34 booléen login() nAssure l ’authentification du sujet. nRetourne: true si l ’authentification réussie. False si le module n ’arrive pas à authentifier.
03/06/2015 JAAS 35 booléen commit() nCette méthode est appelée si le sujet a été authentifiée par tous les modules. nElle ajoute le sujet au Principal.
03/06/2015 JAAS 36 booléen abort() nCette méthode est appelée si un module n ’arrive pas à s ’authentifier. nElle nettoie le module et revient à l ’état initial.
03/06/2015 JAAS 37 booléen logout() nElle supprime le sujet du Principal.
03/06/2015 JAAS 38 JAAS configuration nLe fichier de configuration: SimpleLogin{ SimpleLoginModule required debug=true; }; LoginContext ctx = new LoginContext(« SimpleLogin»); ctx.login();
03/06/2015 JAAS 39 AUTHENTIFICATION Login Module Clé publique Signature Nom ? Rnd ? Credential ? Nom Signature Credential
03/06/2015 JAAS 40 CONCLUSION nRègles de sécurité flexibles nContrôle d ’accès précis nSécurité transparente nPermissions, ClassLoader sécurisé, contrôleur d ’accès pour les développeurs nSécurité pour les applications locales. nSécurité en fonction de l ’utilisateur.
03/06/2015 JAAS 41 JAAS nQuestions ?? nRéponses !! Sources : java.sun.com/security Gilles Gravier