Certificat de demande d’amorçage X509 sur la page de connexion

J’écris une application Spring Boot où, sur la page de connexion, l’utilisateur devrait être invité à fournir son certificate X509 (généré avec mon autorité de certificateion auto-signée). Si l’utilisateur ne parvient pas à fournir un certificate, une autre page contenant une erreur s’affiche. Si l’utilisateur fournit un certificate correct, je souhaite lui montrer une page de connexion avec son email pré-rempli (lu depuis le certificate) et en attente de saisie du mot de passe. Le seul chemin affecté doit être / admin / login qui nécessite un certificate, tous les autres chemins doivent être laissés complètement non sécurisés.

Ce que j’ai trouvé jusqu’ici est cette procédure:

  1. générer des certificates appropriés
  2. générer un fichier jks
  3. configurer tomcat pour demander un certificate
  4. configurer la sécurité du démarrage au spring
  5. Avant de charger la page de connexion, demandez un certificate, parsingz-le, vérifiez la validité des données qu’il contient (nom commun, …)
  6. afficher la page de connexion
  7. vérifier les données de connexion et si c’est ok, faire mes affaires

J’ai des problèmes avec les points 3-5 , car tous les tutoriels que j’ai trouvés ne sont pas vraiment la solution que je recherche.

Par la suite, ce projet Spring Boot sera exécuté derrière l’hôte virtuel d’Apache. Je suppose donc que j’aurai besoin d’Apache pour demander un certificate, puis le transférer vers le serveur Spring Boot.

J’aurais besoin de quelques points de départ pour apprendre les choses dont j’ai besoin pour mettre en œuvre cela.


Un certain contexte: Je construis une application angular 6 (Spring Boot for backend), où j’ai deux types de rôles: les utilisateurs et les administrateurs. Les utilisateurs se connecteront via la page normale (angular) avec seulement le nom d’utilisateur et le mot de passe. L’administrateur devra se connecter en fournissant un certificate, puis en se connectant avec le nom d’utilisateur écrit dans le certificate et le mot de passe. Cela se fera sur une page distincte fournie par Spring Boot avec le moteur de modèle Thymeleaf. Ce que je prévoyais d’implémenter, c’est que lorsque l’utilisateur est authentifié, je génère un jeton JWT et l’enregistre dans un cookie, qui sera utilisé pour toute demande future (pour la durée de validité de JWT). Le seul problème est que je ne sais pas comment connecter toutes ces choses