Au REPOS du ressort du Service de Certificat d'authentification
J'ai écrit Printemps contrôleur. C'est à des demandes de clients. C'est juste en RESTE de style.
C'est très bien. Mais j'ai besoin de l'authentification par certificat. Seuls les clients doivent avoir accès au reste du service (printemps contrôleur), qui ont des certificats client avec la clé (En d'autres termes client doit avoir de magasin de clés avec clé).
Comment puis-je configurer la sécurité pour le printemps? Pourriez-vous me donner un exemple ou un lien où c'est écrit?
Grâce
OriginalL'auteur grep | 2014-10-29
Vous devez vous connecter pour publier un commentaire.
Ce que vous cherchez est appelé L'Authentification Mutuelle.
C'est les serveurs de la responsabilité de faire/demander au client d'envoyer son certificat. Chaque serveur ne présente différemment, et vous aurez à chercher comment configurer votre serveur particulier.
Pour le Printemps de Sécurité, je vous recommande de regarder dans X. 509 De L'Authentification. Ce type d'authentification est assez facile à utiliser et étendre si besoin.
MODIFIER
Donc, voici quelques références qui montrent des exemples de ce que vous demandez:
http://whiteycode.blogspot.com/2012/04/part-3-x509-authentication-with-spring.html
PDF Avertissement
http://www.promixis.com/pdfs/SpringSecurityAndX509ClientCertificates.pdf
Cet exemple est vraiment bon au sujet expliquant comment faire l'installation des certificats et de la création de votre propre CA (Autorité de certification). Avertissement, de la manière qu'ils montrent rendre le certificat du client n'est qu'UN MOYEN, pas le chemin. Vos client (navigateur web IE ou java httpclient client) doit déterminer la façon de créer votre certificat client. Java aime utiliser ses keystore java de cours et les navigateurs ont tendance à aimer le p12 style de certificats.
Finale de conseils/d'avertissement... je ne connais pas votre niveau de connaissance avec les certificats, mais... l'Authentification Mutuelle est tout au sujet de qui les fiducies qui. C'est la coupe de la responsabilité de dire, j'ai besoin de vous afin de vous authentifier avec un certificat et ici est une liste de fournisseurs de certificats en qui j'ai confiance. Il est alors de la responsabilité du client de répondre avec un certificat signé par l'un de ces serveur de confiance des fournisseurs de certificats. C'est les applications de la responsabilité de dire alors, dois-je faire confiance à cette personne sur la base de leur nom à l'intérieur du certificat? Si et quand les choses commencent à aller mal penser à celui qui est, ou n'est-ce pas faire confiance à qui.
Un excellent outil utilise -Djavax.net.debug=ssl sur votre application. Il montrera l'ensemble de la négociation ssl et ce qui est demandé et ce que les réponses spécifiques. Cette option est un peu verbeux, mais il est agréable d'avoir en cas de besoin.
MODIFIER X 2
Voici comment activer l'authentification mutuelle sur Tomcat 7.
Dans votre server.xml fichier de configuration, vous devriez les voir de plus près à ce qui suit pour un connecteur SSL:
De la valeur importante à noter est le clientAuth valeur.
Réglage clientAuth à "vouloir" indique au client d'envoyer un signé certificat ssl client à partir d'une liste de certificats qui approuve le serveur si vous en avez un. Si non, aller de l'avant et faire votre demande comme d'habitude.
Réglage clientAuth "true" indique au client qu'ils ONT pour envoyer un signé certificat ssl client à partir d'une liste de certificats qui approuve le serveur. Si vous ne disposez pas d'un certificat signé par une liste de certificats qui approuve le serveur, le client n'est PAS autorisé à en faire la demande.
La liste des certificats qui approuve le serveur vient de java par défaut truststore ou peut être réglée à l'aide de la
-Djavax.net.ssl.trustStore="C:\Java\Certs\jssecacerts1"
VM option.Généralement, lorsque les particularités de son Certificat d'autorité de certification de confiance qui n'est pas en Java par défaut truststore, la valeur par défaut truststore est copié, le nouveau certificat d'AC est importé dans le copié truststore et ensuite utilisé avec au-dessus de VM option.
AVERTISSEMENT
C'est super important de ne PAS modifier la valeur par défaut de Java truststore en place. Si vous le faites, toutes les applications java par défaut sur la machine à l'aide de la nouvelle mise à jour de truststore. Pas toujours ce que les gens veulent et peuvent cause possible les risques de sécurité.
Wow, c'est un défi de taille. Je vais autour de google et de voir si il y a quelque chose comme ça et mise à jour de la réponse.
Comme vous me dites "C'est les serveurs de responsabilité". si c'est fait côté serveur (par exemple, nous pouvons le faire dans tomcat), pourquoi le printemps de sécurité ont X. 509 de l'Authentification?
Je pense que vous avez pris un peu de ma phrase hors de son contexte. J'ai dit "C'est les serveurs de la responsabilité de faire/demander au client d'envoyer son certificat." Cette phrase signifie que le serveur tomcat doit être mis en place pour ce qu'on appelle l'authentification mutuelle. Dans votre server.xml pour votre connecteur le paramètre clientAuth doivent être veulent ou vrai. Tomcat va ensuite transmettre les informations de certificat pour le printemps et le printemps sera alors de déterminer si la demande doit être authentifié ou non. J'ai mis à jour la réponse à un lien qui explique comment configurer tomcat avec authentification mutuelle.
truststore est également nécessaire (au moins Tomcat 8 a besoin d'elle, vous ne savez pas sur les autres versions). Ma config:
<Connector clientAuth="true" keystoreFile="/data/keystore" keystorePass="123456" truststoreFile="/data/keystore" truststorePass="123456" port="8443" protocol="HTTP/1.1" scheme="https" secure="true" sslProtocol="TLS" .../>
OriginalL'auteur hooknc
J'ai créé un 100% compréhensible exemple de projet avec tout nécessaires à l'installation d'un Ressort de Démarrage de l'app avec un point de terminaison REST qui est sécurisé par certificat client et un cas de test avec le RestTemplate qui est configurée pour utiliser le certificat du client pour communiquer avec le Serveur sécurisé: https://github.com/jonashackt/spring-boot-rest-clientcertificate
Il contient également tous étapes nécessaires pour générer les
.key
,.crt
et.jks
fichiers. Il suffit d'ajuster les mesures en conséquence, si vous ne voulez pas utiliser un certificat auto-signé.Le RestTemplate est configuré comme ceci:
Alors vous pouvez l'utiliser comme vous êtes utilisé pour le
@Autowired
annotation à l'intérieur de votre Test.class.OriginalL'auteur jonashackt