Authentication.

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