java authentification et autorisation service

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

Upload: izzy

Post on 12-Feb-2016

49 views

Category:

Documents


0 download

DESCRIPTION

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: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Java   Authentification et Autorisation Service

Java Authentification et Autorisation

Service

Najla Farah

UJF/ISTG/RICM3http://www-istg.ujf-grenoble.fr/ Année Universitaire 2001-2002

Page 2: Java   Authentification et Autorisation Service

22/04/23JAAS

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.

Page 3: Java   Authentification et Autorisation Service

22/04/23JAAS

3

JAAS ?

QUI?

CodeSignature

Page 4: Java   Authentification et Autorisation Service

22/04/23JAAS

4

Sommaire

Sécurité dans JAVA.

Sécurité avec JAAS.

Exemple sur JAAS.

Page 5: Java   Authentification et Autorisation Service

22/04/23JAAS

5

Cycle de vie du code java

1. Chargement dubytecode

2. Vérification dubytecode

3. Exécution duBytecode

4. Ramasse-miette

0. Référence à unbloc de code

Page 6: Java   Authentification et Autorisation Service

22/04/23JAAS

6

Sécurité dans Java.

Applic

Exécution

Compilateur

Langage

Page 7: Java   Authentification et Autorisation Service

22/04/23JAAS

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.

Page 8: Java   Authentification et Autorisation Service

22/04/23JAAS

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.

Page 9: Java   Authentification et Autorisation Service

22/04/23JAAS

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.

Page 10: Java   Authentification et Autorisation Service

22/04/23JAAS

10

Sécurité des applications.

La sécurité des applications:

• Apple:• Classe chargée par le navigateur Web.

• Signature des applet.

Page 11: Java   Authentification et Autorisation Service

22/04/23JAAS

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

Page 12: Java   Authentification et Autorisation Service

22/04/23JAAS

12

Sécurité JDK 1.2

JVM

Gestionnaire de sécurité

Bac-à sable

Code local ou distant (signé ou pas)

ClassLoaderRègles de sécurité

Pas de notion de code à confiance implicite

Chaqueprogramme a des permissionsdifférentes

Ressources Système

Page 13: Java   Authentification et Autorisation Service

22/04/23JAAS

13

Domaines de protection.

Domaine système

App-1 App-3 App-n

App-2

I/O réseau I/O fich. awt Imprimante

Page 14: Java   Authentification et Autorisation Service

22/04/23JAAS

14

Permissions.

d.classc.classb.classa.class

Domaine deProtection A

Permissions

Domaine deProtection B

Permissions

Classes en coursd ’exécution

Politique de sécurité

Page 15: Java   Authentification et Autorisation Service

22/04/23JAAS

15

Contrôleur d ’accès

Base de règlespour le site

Base de règles par utilisateuret par installation Autorité de certification

Page 16: Java   Authentification et Autorisation Service

22/04/23JAAS

16

Signature du code

Signature

Chiffre

Objet d ’origine

Résumé

Page 17: Java   Authentification et Autorisation Service

22/04/23JAAS

17

Authentification

Identités?Java VM

Mot de passe

Références

Clé de chiffrement

Mesuresbiométriques

Page 18: Java   Authentification et Autorisation Service

22/04/23JAAS

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

Page 19: Java   Authentification et Autorisation Service

22/04/23JAAS

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 qu’une méthode exerce si elle est appelée par un thread.

Page 20: Java   Authentification et Autorisation Service

22/04/23JAAS

20

SecurityPolicy JAVA

Spé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 « http://www.sun.com/sample.jar »,

Signedby « bob »{

Permisson java.lang.RuntimePermission « createClassLoader »;

Permisson java.net.SocketPermision « * », « connect,accept,resolve »;

};

Page 21: Java   Authentification et Autorisation Service

22/04/23JAAS

21

Sommaire

Sécurité dans JAVA.

Sécurité avec JAAS.

Exemple sur JAAS.

Page 22: Java   Authentification et Autorisation Service

22/04/23JAAS

22

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.

Page 23: Java   Authentification et Autorisation Service

22/04/23JAAS

23

Architecture de JAAS

Applications

API

Java 2- Principal- Access Controller- Access Controller Context- Policy-Protection Domain

JAAS- Subject- Login Context- Login Module- Policy

Page 24: Java   Authentification et Autorisation Service

22/04/23JAAS

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();

Page 25: Java   Authentification et Autorisation Service

22/04/23JAAS

25

Autorisation

Si authentification réussie Jaas autorise l ’accès au sujet authentifié :• Subject.doAs(subj,new PrivilegedAction()){}

Page 26: Java   Authentification et Autorisation Service

22/04/23JAAS

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 « file:c:/java/code/sample.jar »,

Signedby « charles »{

permission java.io.FilePermission « c:\\user\\testuser\\-, « read »

};

Page 27: Java   Authentification et Autorisation Service

22/04/23JAAS

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(requestedPermission)

Page 28: Java   Authentification et Autorisation Service

22/04/23JAAS

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();

Page 29: Java   Authentification et Autorisation Service

22/04/23JAAS

29

Applications

Applications

Login Context API

Login Module SPI

Smart CardKerberos Biometric

Configuration

Page 30: Java   Authentification et Autorisation Service

22/04/23JAAS

30

Sommaire

Sécurité dans JAVA.

Sécurité avec JAAS.

Exemple sur JAAS: SmartCard

Page 31: Java   Authentification et Autorisation Service

22/04/23JAAS

31

SmartCard

Portable Sécurisée Personnelle

Page 32: Java   Authentification et Autorisation Service

22/04/23JAAS

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

Page 33: Java   Authentification et Autorisation Service

22/04/23JAAS

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.

Page 34: Java   Authentification et Autorisation Service

22/04/23JAAS

34

booléen login()

Assure l ’authentification du sujet.

Retourne:• true si l ’authentification réussie.• False si le module n ’arrive pas à authentifier.

Page 35: Java   Authentification et Autorisation Service

22/04/23JAAS

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.

Page 36: Java   Authentification et Autorisation Service

22/04/23JAAS

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.

Page 37: Java   Authentification et Autorisation Service

22/04/23JAAS

37

booléen logout()

Elle supprime le sujet du Principal.

Page 38: Java   Authentification et Autorisation Service

22/04/23JAAS

38

JAAS configuration

Le fichier de configuration:

SimpleLogin{

SimpleLoginModule required debug=true;

};

LoginContext ctx = new LoginContext(« SimpleLogin»);

ctx.login();

Page 39: Java   Authentification et Autorisation Service

22/04/23JAAS

39

AUTHENTIFICATION

Login Module

Clé publique

Signature

Nom ?

Rnd ?

Credential ?

Nom

Signature

Credential

Page 40: Java   Authentification et Autorisation Service

22/04/23JAAS

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.

Page 41: Java   Authentification et Autorisation Service

22/04/23JAAS

41

JAAS

Questions ?? Réponses !!

Sources : - http://www.ossir.org/ftp/supports- http:// java.sun.com/security- http://www.gemplus.fr/developers- Gilles Gravier