Начните с добавления SecureRequestCustomizer
к вашему HttpConfiguration
, который ServerConnector
использует.
Это, в свою очередь, добавит несколько атрибутов запроса, которые вы можете использовать для доступа к информации о безопасности, присутствующей в соединении, и обмену запросом / ответом.
Пример (от LikeJettyXml.java
):
// === jetty-http.xml ===
ServerConnector http = new ServerConnector(server,
new HttpConnectionFactory(http_config));
http.setPort(8080);
http.setIdleTimeout(30000);
server.addConnector(http);
// === jetty-https.xml ===
// SSL Context Factory
SslContextFactory sslContextFactory = new SslContextFactory();
sslContextFactory.setKeyStorePath("config/etc/keystore");
sslContextFactory.setKeyStorePassword(...);
sslContextFactory.setKeyManagerPassword(...);
sslContextFactory.setTrustStorePath("config/etc/keystore");
sslContextFactory.setTrustStorePassword(..);
// SSL HTTP Configuration
HttpConfiguration https_config = new HttpConfiguration(http_config);
https_config.addCustomizer(new SecureRequestCustomizer()); // <-- the magic line
// SSL Connector
ServerConnector sslConnector = new ServerConnector(server,
new SslConnectionFactory(sslContextFactory,HttpVersion.HTTP_1_1.asString()),
new HttpConnectionFactory(https_config));
sslConnector.setPort(8443);
server.addConnector(sslConnector);
Как только это будет сделано, при обработке запроса вы сможете получить доступ к атрибутам запроса ...
request.getAttribute("javax.servlet.request.X509Certificate")
- массив java.security.cert.X509Certificate
, используемый в соединении
request.getAttribute("javax.servlet.request.cipher_suite")
- имя согласованного набора шифров (тип String)
request.getAttribute("javax.servlet.request.key_size")
- размер ключа (тип Integer)
request.getAttribute("javax.servlet.request.ssl_session_id")
- идентификатор сеанса SSL (тип String)
request.getAttribute("org.eclipse.jetty.servlet.request.ssl_session")
- активный javax.net.ssl.SSLSession
используется соединением.
Вы должны быть в состоянии получить необходимую информацию из одного из этих источников информации. (Пожалуйста, не изменяйте значения этих атрибутов или рискуйте всякими странными действиями)