Java Authentification et Autorisation Service Najla Farah UJFISTGRICM

  • Slides: 41
Download presentation
Java Authentification et Autorisation Service Najla Farah UJF/ISTG/RICM 3 http: //www-istg. ujf-grenoble. fr/ JAAS

Java Authentification et Autorisation Service Najla Farah UJF/ISTG/RICM 3 http: //www-istg. ujf-grenoble. fr/ JAAS Année Universitaire 2001 -2002

26/12/2021 2 JAAS ? n Standard dans JDK 2. 1 n Authentification: • Pour

26/12/2021 2 JAAS ? n Standard dans JDK 2. 1 n Authentification: • Pour vérifier l ’identité de celui qui exécute le code. n Autorisation: JAAS • Pour contrôler l ’accès à l ’exécution.

26/12/2021 3 JAAS ? Code Signature JAAS QUI?

26/12/2021 3 JAAS ? Code Signature JAAS QUI?

26/12/2021 4 JAAS Sommaire n Sécurité dans JAVA. n Sécurité avec JAAS. n Exemple

26/12/2021 4 JAAS Sommaire n Sécurité dans JAVA. n Sécurité avec JAAS. n Exemple sur JAAS.

26/12/2021 5 Cycle de vie du code java 1. Chargement du bytecode 2. Vérification

26/12/2021 5 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

26/12/2021 6 Sécurité dans Java. Applic Exécution Compilateur JAAS Langage

26/12/2021 6 Sécurité dans Java. Applic Exécution Compilateur JAAS Langage

26/12/2021 7 Sécurité du langage. n La sécurité au niveau du langage: JAAS •

26/12/2021 7 Sécurité du langage. n La sécurité au niveau du langage: JAAS • • • Syntaxe et sémantique strictes. Encapsulation des données. Spécification du langage. Gestion des types. Vérificateur de bytecode.

26/12/2021 8 Sécurité du compilateur. n La sécurité au niveau compilateur: JAAS • •

26/12/2021 8 Sécurité du compilateur. n La sécurité au niveau compilateur: JAAS • • Contrôle d ’accès. Valeur initiale des variables. Accès des registres. Passage des paramètres.

26/12/2021 9 Sécurité à l ’exécution. n La sécurité à l ’exécution: JAAS •

26/12/2021 9 Sécurité à l ’exécution. n La sécurité à l ’exécution: JAAS • 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.

26/12/2021 10 Sécurité des applications. n La sécurité des applications: • Apple: • Classe

26/12/2021 10 Sécurité des applications. n La sécurité des applications: • Apple: • Classe chargée par le navigateur Web. JAAS • Signature des applet.

26/12/2021 11 Sécurité JDK 1. 1 Code distant Je fais ce que je veux!

26/12/2021 11 Sécurité JDK 1. 1 Code distant Je fais ce que je veux! » d e t s u autres « tr Bac-à sable Code local JVM JAAS Gestionnaire de sécurité Ressources Système Coincé!

26/12/2021 12 Sécurité JDK 1. 2 Code local ou distant (signé ou pas) Règles

26/12/2021 12 Sécurité JDK 1. 2 Code local ou distant (signé ou pas) Règles de sécurité Class. Loader Pas de notion de code à confiance implicite JVM Chaque programme a Bac-à sable des permissions différentes Gestionnaire de sécurité JAAS Ressources Système

26/12/2021 13 Domaines de protection. App-2 App-1 App-3 App-n Domaine système JAAS I/O réseau

26/12/2021 13 Domaines de protection. App-2 App-1 App-3 App-n Domaine système JAAS I/O réseau I/O fich. awt Imprimante

26/12/2021 14 Permissions. d. class c. class b. class a. class JAAS Classes en

26/12/2021 14 Permissions. d. class c. class b. class a. class JAAS Classes en cours d ’exécution Domaine de Protection A Permissions Domaine de Protection B Permissions Politique de sécurité

26/12/2021 15 Contrôleur d ’accès Base de règles pour le site JAAS Base de

26/12/2021 15 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

26/12/2021 16 Signature du code Résumé Objet d ’origine Signature JAAS Chiffre

26/12/2021 16 Signature du code Résumé Objet d ’origine Signature JAAS Chiffre

26/12/2021 17 Authentification Clé de chiffrement Références Identités? Java VM JAAS Mot de passe

26/12/2021 17 Authentification Clé de chiffrement Références Identités? Java VM JAAS Mot de passe Mesures biométriques

26/12/2021 18 Les concepts(1). n Principal: • entité à laquelle sont accordées des permissions.

26/12/2021 18 Les concepts(1). n Principal: • entité à laquelle sont accordées des permissions. n Code Source: • identifie un code par URL, une signature. n Protection. Domain: • ensembles de classes provenant d ’une même code source et ayant les mêmes permissions. n Security. Policy: JAAS • 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

26/12/2021 19 Les concepts(2) n Security. Class. Loader et Class. Loader: • interroge la

26/12/2021 19 Les concepts(2) n Security. Class. Loader et Class. Loader: • interroge la politique de sécurité pour déterminer les permissions. • Charge le code dans JVM en lui associant les permissions. n Security. Manager: • implémente le système de sécurité. n Access. Controller: • gère les permissions. JAAS n Access. Control. Context: • représente les permissions qu’une méthode exerce si elle est appelée par un thread.

26/12/2021 20 Security. Policy JAVA n Spécification des permissions d ’une source de code

26/12/2021 20 Security. Policy JAVA n Spécification des permissions d ’une source de code grant Code. Base « file: c: /java/code/sample. jar » { permission java. io. File. Permission « c: \user\testuser\-, « read » }; grant Code. Base « http: //www. sun. com/sample. jar » , Signedby « bob » { Permisson java. lang. Runtime. Permission « create. Class. Loader » ; Permisson java. net. Socket. Permision « * » , « connect, accept, resolve » ; JAAS };

26/12/2021 21 JAAS Sommaire n Sécurité dans JAVA. n Sécurité avec JAAS. n Exemple

26/12/2021 21 JAAS Sommaire n Sécurité dans JAVA. n Sécurité avec JAAS. n Exemple sur JAAS.

26/12/2021 22 JAAS n JAAS augmente la granularité de la sécurité en se basant

26/12/2021 22 JAAS n JAAS augmente la granularité de la sécurité en se basant sur l’authentification de l ’exécuteur du code. n JAAS augmente les privilèges de cet utilisateur authentifié en lui accordant les autorisations adéquates.

26/12/2021 23 Architecture de JAAS Applications API Java 2 JAAS - Principal - Access

26/12/2021 23 Architecture de JAAS Applications API Java 2 JAAS - Principal - Access Controller Context - Policy -Protection Domain JAAS - Subject - Login Context - Login Module - Policy

26/12/2021 24 Authentification n Création du login: • Login. Context ctx = new Login.

26/12/2021 24 Authentification n Création du login: • Login. Context ctx = new Login. Context( « Simple. Login » ); n Authentification du sujet: • ctx. login(); n Association du login au sujet si authentification réussie: JAAS • Subject subj = ctx. get. Subject();

26/12/2021 25 Autorisation n Si authentification réussie Jaas autorise l ’accès au sujet authentifié

26/12/2021 25 Autorisation n Si authentification réussie Jaas autorise l ’accès au sujet authentifié : JAAS • Subject. do. As(subj, new Privileged. Action()){}

26/12/2021 26 Security. Policy JAAS n La politique de sécurité est lié à un

26/12/2021 26 Security. Policy JAAS n La politique de sécurité est lié à un rôle d ’un sujet: Grant Principal sample. Sample. Principale » testuser » { permission java. io. File. Permission « c: \user\testuser\-, « read » }; Code. Base « file: c: /java/code/sample. jar » , Signedby « charles » { JAAS permission java. io. File. Permission « c: \user\testuser\-, « read » };

26/12/2021 27 Implémentation de JAVA - Dans chaque objet il y a une Secutity.

26/12/2021 27 Implémentation de JAVA - Dans chaque objet il y a une Secutity. Police: Policy. get. Policy() - La Class. Loader associe les permissions à chaque classe: Policy. get. Policy(). get. Permissions(codesource) JAAS - Le Secutity. Manager gère les permissions: cl. getprotection. Domain(). get. Permissions(). implies(req uested. Permission)

26/12/2021 28 Implémentation de JAAS - Dans chaque objet il y a une Secutity.

26/12/2021 28 Implémentation de JAAS - Dans chaque objet il y a une Secutity. Police: javax. security. auth. Policy. get. Policy(); - Avec la méthode do. As: - on associe les permissions au sujet: Policy. get. Policy(). get. Permissions(subj, codesource); JAAS - on associe le sujet à Access. Control. Context: javax. security. auth. Subject. Domain. Combiner. combine();

26/12/2021 29 Applications Login Context API Login Module SPI Configuration JAAS Kerberos Smart Card

26/12/2021 29 Applications Login Context API Login Module SPI Configuration JAAS Kerberos Smart Card Biometric

26/12/2021 30 JAAS Sommaire n Sécurité dans JAVA. n Sécurité avec JAAS. n Exemple

26/12/2021 30 JAAS Sommaire n Sécurité dans JAVA. n Sécurité avec JAAS. n Exemple sur JAAS: Smart. Card

26/12/2021 31 Smart. Card n n JAAS n Portable Sécurisée Personnelle

26/12/2021 31 Smart. Card n n JAAS n Portable Sécurisée Personnelle

26/12/2021 32 login module n Avec « login » Login. Context appelle ces méthodes

26/12/2021 32 login module n Avec « login » Login. Context appelle ces méthodes qui sont implémentées dans login. Module: JAAS 1 -Void initialize(…) 2 - booléen login() 3 - booléen commit() 4 -booléen abort() 5 -booléen logout()

26/12/2021 33 void initialize(…) n Donne une référence : JAAS • Sur le sujet

26/12/2021 33 void initialize(…) n Donne une référence : JAAS • Sur le sujet qui sera attaché à un principal en cas de succès d ’authentification. • Sur Call. Back. Handler • Options sur la configuration.

26/12/2021 34 booléen login() n Assure l ’authentification du sujet. n Retourne: JAAS •

26/12/2021 34 booléen login() n Assure l ’authentification du sujet. n Retourne: JAAS • true si l ’authentification réussie. • False si le module n ’arrive pas à authentifier.

26/12/2021 35 JAAS booléen commit() n Cette méthode est appelée si le sujet a

26/12/2021 35 JAAS booléen commit() n Cette méthode est appelée si le sujet a été authentifiée par tous les modules. n Elle ajoute le sujet au Principal.

26/12/2021 36 JAAS booléen abort() n Cette méthode est appelée si un module n

26/12/2021 36 JAAS booléen abort() n Cette méthode est appelée si un module n ’arrive pas à s ’authentifier. n Elle nettoie le module et revient à l ’état initial.

26/12/2021 37 booléen logout() JAAS n Elle supprime le sujet du Principal.

26/12/2021 37 booléen logout() JAAS n Elle supprime le sujet du Principal.

26/12/2021 38 JAAS configuration n Le fichier de configuration: Simple. Login{ Simple. Login. Module

26/12/2021 38 JAAS configuration n Le fichier de configuration: Simple. Login{ Simple. Login. Module required debug=true; }; Login. Context ctx = new Login. Context( « Simple. Login» ); JAAS ctx. login();

26/12/2021 39 AUTHENTIFICATION Login Module Nom ? Nom Rnd ? Clé publique Signature Credential

26/12/2021 39 AUTHENTIFICATION Login Module Nom ? Nom Rnd ? Clé publique Signature Credential ? JAAS Credential

26/12/2021 40 CONCLUSION n n n JAAS n Règles de sécurité flexibles Contrôle d

26/12/2021 40 CONCLUSION n n n JAAS n Règles de sécurité flexibles Contrôle d ’accès précis Sécurité transparente Permissions, Class. Loader sécurisé, contrôleur d ’accès pour les développeurs Sécurité pour les applications locales. Sécurité en fonction de l ’utilisateur.

26/12/2021 41 JAAS n n JAAS Sources : Questions ? ? Réponses !! -

26/12/2021 41 JAAS n n JAAS Sources : Questions ? ? Réponses !! - http: //www. ossir. org/ftp/supports - http: // java. sun. com/security - http: //www. gemplus. fr/developers - Gilles Gravier