Как получить доступ к SSLSocket, используемому для запроса сервлета в теле метода doPost (метод? - PullRequest
0 голосов
/ 01 марта 2019

Я реализую HTTP-сервлет, создав подкласс javax.servlet.http.HttpServlet и переопределив метод doPost.В теле метода doPost мне нужно получить доступ к объекту SSLSocket, который использовался для обработки запроса и будет использоваться для обработки ответа.Контейнер сервлета также используется в качестве сервера HTTPS.Перед контейнером сервлета нет веб-сервера, балансировщика нагрузки, оконечного устройства TLS и т. Д.Клиенты подключаются напрямую к сервлет-контейнеру исключительно с использованием HTTPS.

Как получить доступ к объекту SSLSocket, который использовался для обработки запроса и будет использоваться для обработки ответа из тела метода doPost?

Вам может быть интересно, почему я должен это сделать.Мне нужно получить доступ к информации о привязке канала, связанной с соединением.Да, я знаю, что поддержка привязки каналов в настоящее время не стандартизирована в спецификации JSSE и, как следствие, не поддерживается поставщиком JSSE по умолчанию, предоставленным Oracle.Вот почему я использую JSSE-провайдер Bouncy Castle, который поддерживает привязку каналов.

1 Ответ

0 голосов
/ 01 марта 2019

Сначала остановите точку в doPost и просмотрите переменные, которые вы видите в стеке потоков.Существует объект запроса / ответа, и он будет зависеть от реализации (tomcat, jetty и т. Д.)

Решение зависит от следующих факторов:

a) если вы можете связаться с sslsocket побурение в частных полях запроса или ответа.Я знаю, что вы можете с tomcat.

b) если вы можете и хотите писать код, использующий отражение, и нет политики безопасности, которая не позволяет вам вызывать Field.setAccessible (true) и получать значение с помощьюField.get (..)

c) если вы способны обрабатывать сбои и у вас есть четкое указание на то, что регрессии в этом не скомпилированном коде могут быть обнаружены в dev или qa.Это связано с тем, что версия сервера наверняка будет обновлена ​​в будущем, и ваш код может внезапно сломаться без ошибки компиляции.Интеграционные тесты являются обязательными.

Так что вы, наверное, догадались, с отражением вы можете углубиться в любые поля запроса или ответа.

...