410 likes | 596 Views
Java Authentification et Autorisation Service. Najla Farah. UJF/ISTG/RICM3 http://www-istg.ujf-grenoble.fr/. Année Universitaire 2001-2002. JAAS ?. Standard dans JDK 2.1 Authentification: Pour vérifier l ’identité de celui qui exécute le code. Autorisation:
E N D
Java Authentification et Autorisation Service Najla Farah UJF/ISTG/RICM3 http://www-istg.ujf-grenoble.fr/ Année Universitaire 2001-2002
JAAS ? • Standard dans JDK 2.1 • Authentification: • Pour vérifier l ’identité decelui qui exécute le code. • Autorisation: • Pour contrôler l ’accès à l ’exécution. JAAS
JAAS ? Code Signature QUI? JAAS
Sommaire • Sécurité dans JAVA. • Sécurité avec JAAS. • Exemple sur JAAS. JAAS
Cycle de vie du code java 1. Chargement du bytecode 2. Vérification du bytecode 0. Référence à un bloc de code JAAS 4. Ramasse-miette 3. Exécution du Bytecode
Sécurité dans Java. Applic Exécution Compilateur Langage JAAS
Sécurité du langage. • La 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. JAAS
Sécurité du compilateur. • La sécurité au niveau compilateur: • Contrôle d ’accès. • Valeur initiale des variables. • Accès des registres. • Passage des paramètres. JAAS
Sécurité à l ’exécution. • La 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. JAAS
Sécurité des applications. • La sécurité des applications: • Apple: • Classe chargée par le navigateur Web. • Signature des applet. JAAS
Sécurité JDK 1.1 Code distant Je fais ce que je veux! « trusted » autres Coincé! Bac-à sable Code local JAAS JVM Gestionnaire de sécurité Ressources Système
Sécurité JDK 1.2 Code local ou distant (signé ou pas) Règles de sécurité ClassLoader Pas de notion de code à confiance implicite Chaque programme a des permissions différentes Bac-à sable JAAS JVM Gestionnaire de sécurité Ressources Système
Domaines de protection. App-2 App-n App-1 App-3 Domaine système JAAS awt I/O réseau I/O fich. Imprimante
Domaine de Protection A Permissions Permissions. d.class c.class b.class a.class Domaine de Protection B Permissions JAAS Classes en cours d ’exécution Politique de sécurité
Contrôleur d ’accès Base de règles pour le site JAAS Base de règles par utilisateur et par installation Autorité de certification
Signature du code Résumé Objet d ’origine Signature JAAS Chiffre
Authentification Clé de chiffrement Références Identités? Java VM JAAS Mesures biométriques Mot de passe
Les concepts(1). • Principal: • entité à laquelle sont accordées des permissions. • Code Source: • identifie un code par URL,une signature. • ProtectionDomain: • ensembles de classes provenant d ’une même code source et ayant les mêmes permissions. • 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 JAAS
Les concepts(2) • SecurityClassLoader et ClassLoader: • interroge la politique de sécurité pour déterminer les permissions. • Charge le code dans JVM en lui associant les permissions. • SecurityManager: • implémente le système de sécurité. • AccessController: • gère les permissions. • AccessControlContext: • représente les permissions qu’une méthode exerce si elle est appelée par un thread. JAAS
SecurityPolicy JAVA • Spécification des permissions d ’une source de code grantCodeBase « file:c:/java/code/sample.jar »{ permission java.io.FilePermission « c:\\user\\testuser\\-,« read » }; grant CodeBase « http://www.sun.com/sample.jar », Signedby « bob »{ Permisson java.lang.RuntimePermission « createClassLoader »; Permisson java.net.SocketPermision « * », « connect,accept,resolve »; }; JAAS
Sommaire • Sécurité dans JAVA. • Sécurité avec JAAS. • Exemple sur JAAS. JAAS
JAAS • JAAS augmente la granularité de la sécurité en se basant sur l’authentification de l ’exécuteur du code. • JAAS augmente les privilèges de cet utilisateur authentifié en lui accordant les autorisations adéquates. JAAS
Java 2 - Principal - Access Controller - Access Controller Context - Policy -Protection Domain Architecture de JAAS Applications API JAAS - Subject - Login Context - Login Module - Policy JAAS
Authentification • Création du login: • LoginContext ctx = new LoginContext(« SimpleLogin »); • Authentification du sujet: • ctx.login(); • Association du login au sujet si authentification réussie: • Subject subj = ctx.getSubject(); JAAS
Autorisation • Si authentification réussie Jaas autorise l ’accès au sujet authentifié : • Subject.doAs(subj,new PrivilegedAction()){} JAAS
SecurityPolicy JAAS • La 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 » }; JAAS
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(requestedPermission) JAAS
Implémentation de JAAS - Dans chaque objet il y a une SecutityPolice: javax.security.auth.Policy.getPolicy(); - Avec la méthode doAs: - onassocie les permissions au sujet: Policy.getPolicy().getPermissions(subj,codesource); - on associe le sujet à AccessControlContext: javax.security.auth.SubjectDomainCombiner.combine(); JAAS
Applications Applications Login Context API Login Module SPI Configuration Kerberos Smart Card Biometric JAAS
Sommaire • Sécurité dans JAVA. • Sécurité avec JAAS. • Exemple sur JAAS: SmartCard JAAS
SmartCard • Portable • Sécurisée • Personnelle SmartCard JAAS
login module • Avec « 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() JAAS
void initialize(…) • Donne 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. JAAS
booléen login() • Assure l ’authentification du sujet. • Retourne: • true si l ’authentification réussie. • False si le module n ’arrive pas à authentifier. JAAS
booléen commit() • Cette méthode est appelée si le sujet a été authentifiée par tous les modules. • Elle ajoute le sujet au Principal. JAAS
booléen abort() • Cette méthode est appelée si un module n ’arrive pas à s ’authentifier. • Elle nettoie le module et revient à l ’état initial. JAAS
booléen logout() • Elle supprime le sujet du Principal. JAAS
JAAS configuration • Le fichier de configuration: SimpleLogin{ SimpleLoginModule required debug=true; }; JAAS LoginContext ctx = new LoginContext(« SimpleLogin»); ctx.login();
AUTHENTIFICATION Nom ? Login Module Clé publique Signature Nom Rnd ? SmartCard Signature Credential ? JAAS Credential
CONCLUSION • Règles de sécurité flexibles • Contrôle d ’accès précis • Sécurité transparente • Permissions, ClassLoader sécurisé, contrôleur d ’accès pour les développeurs • Sécurité pour les applications locales. • Sécurité en fonction de l ’utilisateur. JAAS
JAAS • Questions ?? • Réponses !! JAAS Sources : - http://www.ossir.org/ftp/supports - http:// java.sun.com/security - http://www.gemplus.fr/developers - Gilles Gravier