Authentification.
Besoin
Garantir la source et l'intégrité de quelque chose (et donc indirectement
la non-répudiation)
Analyse
L'authentification est réalisée par des signatures
des messages à authentifier.
Client
Par authentification d'un client on entend identification du client par le
serveur avec qui il communique.
Une telle identification suppose :
- un realm : mécanisme
permettant d'associer des informations émises par le client (login/mot
de passe, certificat) à une identité
connue du serveur.
- une ACL : mécanisme permettant
d'associer cette identité à un ensemble
de permissions (ou privilèges, autorisations).
Cela peut s'effectuer de deux manières :
- le client s'identifie par login et mot de passe.
- Ce type d'opération était problématique avant Java
2, dans la mesure où elle imposait au client de fournir son identification
au travers d'une boîte de dialogue modale. L'exploitation de la
syntaxe d'URL de type http://user:password@machine.domaine/ressource
était également problématique puisqu'affichant le
mot de passe en clair.
- Java 2 fournit la classe abstraite java.net.Authenticator,
dont doivent dériver les applications pour définir l'authentification
à fournir. Ces applications doivent alors invoquer java.net.Authenticator.setDefault
(myAuthenticator) pour spécifier au système
quel authentification fournir lorsque cela sera nécessaire. Le
système pourra alors fournir un mot de passe via un objet java.net.PasswordAuthentication.
- le client fournit un certificat au serveur.
Applet non plugin
Dans le cas d'un client de type applet non-plugin, celle-ci doit fournir un
certificat installé dans la base de certificats
du navigateur, ce qui est impossible directement. L'applet peut alors confier
cette tâche à une servlet qui se charge de récupérer
le certificat pour elle depuis le navigateur.
Serveur