2010-06-08 2 views
5

Je suis nouveau à la sécurité du printemps en général et je suis un peu confus.Spring-Security avec X509?

Le projet J'essaie d'intégrer cela avec des certificats X509 pour identifier les utilisateurs qui se connectent à l'application. Il n'y a pas de noms d'utilisateur ou de mots de passe. Nous validons les certificats sont bons, et qu'ils ont eu accès à notre application.

La question est de savoir comment intégrer ces fonctions pour obtenir leurs rôles en utilisant les certificats X509.

J'ai vu this:

<http> 
... 
    <x509 subject-principal-regex="CN=(.*?)," user-service-ref="userService"/> 
... 
</http> 

Mais je ne comprends pas comment cela fonctionne. Est-ce qu'il faudra encore quelque chose pour un mot de passe? Ou est le sujet tout ce dont il a besoin?

Répondre

1

Mais je ne comprends pas comment cela fonctionne. Est-ce qu'il faudra encore quelque chose pour un mot de passe? Ou est le sujet tout ce dont il a besoin?

Je pense que c'est tout ce dont il a besoin. Je crois que le modèle est que le protocole TLS détermine que l'utilisateur/client «possède» le certificat en utilisant des techniques de cryptage de clé publique qui se résument à l'utilisateur/client connaissant la clé privée pour le certificat. Il est supposé que seul l'utilisateur connaîtra sa propre clé privée, et par conséquent que qui/quoi que ce soit peut prouver la connaissance de la clé est l'utilisateur.

1

Au moins pour un navigateur accédant à votre service, l'utilisateur sera invité à saisir le mot de passe qui a été utilisé lors de la création du certificat X509. Vous pouvez créer des certificats sans mot de passe, mais ce n'est pas aussi sécurisé. Le navigateur et votre conteneur de servlet géreront la négociation SSL après que l'utilisateur ait entré le mot de passe et si tout va bien, vous pourrez alors utiliser votre implémentation UserDetailsService pour remplir le Principe avec les rôles que l'utilisateur a.

Questions connexes