Проверка подлинности в доверенном хранилище Jetty с использованием SSL-аутентификации клиента - PullRequest
1 голос
/ 08 февраля 2011

Я пытаюсь создать веб-приложение с использованием клиентских ключей для аутентификации клиента.Я думаю, что я выяснил всю проблему хранилища доверенных сертификатов, чтобы я мог получить подлинность клиента.Однако я не хочу требовать авторизации клиента.Я просто хочу проверить его и включить функции, если он включен.

Я могу использовать .wantClientAuth, который будет запрашивать его, но разрешить подключение, если оно не существует.Но я не могу найти какое-либо свойство, чтобы узнать, был ли запрос аутентифицирован.

Это должно существовать, иначе какова цель wantClientAuth.Как мне это использовать?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2011

Если вы используете API сервлета, используйте метод Тима.Вот некоторые другие идеи в зависимости от контекста вызова.

После завершения рукопожатия вы можете вызвать getCertChain в сеансе SSLS.Если значение равно null, клиент не прошел аутентификацию с помощью сертификата клиента.

См. Метод настройки здесь:

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

В качестве альтернативы вы можете вызвать getLocalPrincipal или getLocalCertificatesHttpsURLConnection.Если они нулевые, то сертификат клиента отсутствует.

0 голосов
/ 08 февраля 2011

У меня не запущена установка, чтобы протестировать ее прямо сейчас, но не стоит request.getUserPrincipal() а также request.getAuthType() дай тебе то, что ты хочешь.

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

(Предполагается, что у вас есть доступ к сервлет-запросу в контексте, в котором вы работаете)

...