Title: Java Authentification et Autorisation Service
1Java Authentification et Autorisation Service
UJF/ISTG/RICM3 http//www-istg.ujf-grenoble.fr/
Année Universitaire 2001-2002
2 JAAS ?
- Standard dans JDK 2.1
- Authentification
- Pour vérifier l identité de celui qui exécute le
code. - Autorisation
- Pour contrôler l accès à l exécution.
3 JAAS ?
Code Signature
QUI?
4 Sommaire
- Sécurité dans JAVA.
- Sécurité avec JAAS.
- Exemple sur JAAS.
5 Cycle de vie du code java
1. Chargement du bytecode
2. Vérification du bytecode
0. Référence à un bloc de code
4. Ramasse-miette
3. Exécution du Bytecode
6 Sécurité dans Java.
Applic
Exécution
Compilateur
Langage
7 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.
8 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.
9 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.
10 Sécurité des applications.
- La sécurité des applications
- Apple
- Classe chargée par le navigateur Web.
- Signature des applet.
11 Sécurité JDK 1.1
Code distant
Je fais ce que je veux!
trusted
autres
Coincé!
Bac-à sable
Code local
JVM
Gestionnaire de sécurité
Ressources Système
12 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
JVM
Gestionnaire de sécurité
Ressources Système
13 Domaines de protection.
App-2
App-n
App-1
App-3
Domaine système
awt
I/O réseau
I/O fich.
Imprimante
14 Permissions.
d.class c.class b.class a.class
Domaine de Protection B
Permissions
Classes en cours d exécution
Politique de sécurité
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
16 Signature du code
Résumé
Objet d origine
Signature
Chiffre
17 Authentification
Clé de chiffrement
Références
Identités? Java VM
Mesures biométriques
Mot de passe
18 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
19 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 quune méthode exerce
si elle est appelée par un thread.
20 SecurityPolicy JAVA
- Spécification des permissions d une source de
code
grant CodeBase filec/java/code/sample.jar p
ermission java.io.FilePermission
c\\user\\testuser\\-, read grant
CodeBase http//www.sun.com/sample.jar ,
Signedby bob Permisson java.lang.RuntimePer
mission createClassLoader Permisson
java.net.SocketPermision ,
connect,accept,resolve
21 Sommaire
- Sécurité dans JAVA.
- Sécurité avec JAAS.
- Exemple sur JAAS.
22 JAAS
- JAAS augmente la granularité de la sécurité en se
basant sur lauthentification de l exécuteur du
code. - JAAS augmente les privilèges de cet utilisateur
authentifié en lui accordant les autorisations
adéquates.
23 Architecture de JAAS
Applications
API
JAAS
- Subject - Login Context - Login Module - Policy
24 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()
25 Autorisation
- Si authentification réussie Jaas autorise
l accès au sujet authentifié - Subject.doAs(subj,new PrivilegedAction())
26 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
filec/java/code/sample.jar , Signedby
charles permission java.io.FilePermission
c\\user\\testuser\\-, read
27 Implémentation de JAVA
- Dans chaque objet il y a une SecutityPolice Po
licy.getPolicy()
- La ClassLoader associe les permissions à chaque
classe Policy.getPolicy().getPermissions(codesou
rce)
- Le SecutityManager gère les permissions cl.getp
rotectionDomain().getPermissions().implies(request
edPermission)
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().getPermis
sions(subj,codesource)
- on associe le sujet à AccessControlContext
javax.security.auth.SubjectDomainCombiner.combine(
)
29 Applications
Applications
Login Context API
Login Module SPI
Configuration
Smart Card
Kerberos
Biometric
30 Sommaire
- Sécurité dans JAVA.
- Sécurité avec JAAS.
- Exemple sur JAAS SmartCard
31 SmartCard
- Portable
- Sécurisée
- Personnelle
SmartCard
32 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()
33 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.
34 booléen login()
- Assure l authentification du sujet.
- Retourne
- true si l authentification réussie.
- False si le module n arrive pas à authentifier.
35 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.
36 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.
37 booléen logout()
- Elle supprime le sujet du Principal.
38 JAAS configuration
- Le fichier de configuration
SimpleLogin SimpleLoginModule required
debugtrue
LoginContext ctx new LoginContext( SimpleLogin
) ctx.login()
39 AUTHENTIFICATION
Nom ?
Login Module Clé publique Signature
Nom
SmartCard
Rnd ?
Signature
Credential ?
Credential
40 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.
41 JAAS
Sources - http//www.ossir.org/ftp/supports -
http// java.sun.com/security -
http//www.gemplus.fr/developers - Gilles Gravier