2010-06-21 5 views
2

Je développe un service Web Java, avec la sécurité du certificat client activée. Je ne souhaite pas ajouter de paramètre à chaque méthode avec un ID utilisateur. Puisque l'utilisateur s'authentifie déjà via l'en-tête de savon avec son certificat client, est-il possible de récupérer les données de l'utilisateur (nom commun, e-mail, etc.) de son certificat?Obtenir des informations sur l'utilisateur à partir d'un certificat client dans un contexte de service Web Java

Merci!

+0

avez-vous réussi à le faire fonctionner? Partager les commentaires. – Bozho

Répondre

3

Voici comment vous pouvez récupérer DN de la demande,

 Object certChain = request.getAttribute(
      "javax.servlet.request.X509Certificate"); 
     if (certChain != null) { 
      X509Certificate certs[] = (X509Certificate[])certChain; 
      X509Certificate cert = certs[0]; 
      String n = cert.getSubjectDN().getName(); 
     } 

Pour que cela fonctionne, vous avez configurer le connecteur HTTPS correctement. Si AJP est utilisé, vous devez configurer le connecteur AJP afin que le certificat soit transmis d'Apache à Tomcat.

+0

merci pour la réponse! J'ai dû arrêter de travailler sur ce code mais je reviendrai ici dès que possible et j'essaierai vos suggestions. – daigorocub

+0

Vous devez corriger, monsieur! Merci! J'ai essayé pendant un certain temps le WebServiceContext, mais sans succès à cause des versions du serveur d'application. Je viens d'ajouter le code "request": Object certChain = oracle.security.jazn.ApplicationServerProxy .getHttpServletRequest(). GetAttribute ("javax.servlet.request.X509Certificate"); – daigorocub

Questions connexes