2011-02-08 11 views
1

J'essaie de créer une application web en utilisant des clés client pour l'authentification du client. Je pense avoir trouvé tout le problème du truststore pour pouvoir authentifier le client. Cependant, je ne veux pas exiger l'authentification du client. Je veux juste tester pour cela et activer les fonctionnalités si elle est activée.Authentification truststore Jetty avec authentification client SSL

Je peux utiliser .wantClientAuth qui le demandera, mais autorisera la connexion si elle n'existe pas. Mais je ne trouve aucune propriété pour savoir si la requête a été authentifiée.

Cela devrait exister, sinon quel est le but de wantClientAuth. Comment l'utiliser?

+0

Aucune de ces deux méthodes n'a fonctionné. Je ne travaille pas encore activement sur le problème parce que j'ai été en mesure de trouver une solution de contournement qui consiste à envoyer la communication autorisée du client sur un canal distinct. Et je peux continuer à utiliser cette solution. – Arelius

Répondre

0

Je n'ai pas la configuration en cours d'exécution ici, pour le tester en ce moment, mais il ne faut pas request.getUserPrincipal() et request.getAuthType() vous donner ce que vous voulez.

Voir http://www.docjar.com/docs/api/javax/servlet/http/HttpServletRequest.html

(cela suppose que vous avez accès à la demande de servlet dans le contexte dans lequel vous travaillez)

+0

J'ai la requête de serveur. Le problème est que les deux retournent à zéro. – Arelius

0

Si vous utilisez l'utilisation de l'API servlet de méthode de Tim. Voici d'autres idées en fonction de votre contexte d'appel.

Une fois la prise de contact terminée, vous pouvez appeler getCertChain sur la SSLSession. Si elle est nulle, le client ne s'est pas authentifié avec un certificat client.

Voir la méthode customize ici:

http://www.javadocexamples.com/java_source/org/mortbay/jetty/security/SslSocketConnector.java.html

Sinon, vous pouvez appeler getLocalPrincipal ou getLocalCertificates sur le HttpsURLConnection. Si elles sont nulles, il n'y a pas de certificat client.