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 2 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 https://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.