Salut,
Je suis à peu près sur le même genre de projet actuellement! Voila comment doit fonctionner ton architecture d'authentification.
Tu as un annuaire (ldap, Active Directory) qui va contenir tes informations sur l'utilisateur et permettre de récuperer son certificat .
Le Certificat contient (entre autre):
- des information sur l'utilisateur (nom prenom...)
- des information sur l'autorité de certification par laquelle a été émise le certificat (soit une autorité publique, soit une autorité mise en place par tes soins)
- la clé publique de l'utilisateur
- la clé publique de l'organisme de certification
- le hash du certificat (pour verrification de son integrité)
Lorsqu'un utilisateur demande accès:
- une demande est transmise au serveur d'authentification.
- le serveur ce debrouille pour récuperer la clé publique de l'utilisateur (soit il la possede deja soit fait une requette aupres de l'autorité tierce de confiance)
- il envoie un challenge à l'utilisateur qu'il chiffre avec sa clé publique
- l'utilisateur peut prouver son identité au serveur en dechiffrant le challenge avec sa clé publique qu'il est le seul a connaitre.
Il peut y avoir d'autre détails (nécessité d'authentifié également le serveur d'authentification par le client dans un schéma symetrique) mais en fait, l'identification ne repose pas sur la transmission par le client de son certificat que n'importe qui de toute facon doit pouvoir récuperer.
En gros, tu transmets ta demande de connexion à un serveur, qui t'authentifie en faisant appel au serveur d'authentification et l'authentification en elle meme se fait en apportant la preuve que tu possède la clé privé qui est associé a la clé publique que l'autorité de certification (auquel les deux partis accordent leur confiance) transmet au serveur d'autentification.
J'éspère que ca pourra t'aider un peu. Tiens moi au courrant de tes avancées sur le projet.