HTTPS и RESTEasy - PullRequest
       6

HTTPS и RESTEasy

3 голосов
/ 28 июня 2011

Есть ли способ в конфигурации RESTEasy (используя 2. *) или jax-rs запретить доступ http к любым веб-службам на основе REST?Я хочу обслуживать только конечные точки веб-службы в https.

Ответы [ 3 ]

4 голосов
/ 26 марта 2012

В Tomcat это делается на основе порта.Похоже, есть 3 шага для его настройки.

1) Создание файла KeyStore.Я использовал java для генерации этой команды:

Keytool –genkey –alias presto  –keypass prestoAdmin  –keystore presto.bin –storepass prestoAdmin

Скопируйте файл presto.bin в каталог веб-приложений tomcat

2) Настройка server.xml для tomcat

<Connector port=”PORT_TO_BE_SCURED”  maxThreads="200"
scheme="https" secure="true" SSLEnabled="true"
keystoreFile../webapps/presto.bin " keystorePass="prestoAdmin"
clientAuth="false" sslProtocol="TLS"/>

3) Настройка веб-службы для использования защищенного соединения.Добавьте следующее в web.xml

<security-constraint>
<web-resource-collection>
<web-resource-name>securedapp</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>

Я вытащил это из http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html

3 голосов
/ 23 мая 2013

Вот как я это сделал:

HttpServletRequest httpServletRequest =
    ResteasyProviderFactory.getContextData(HttpServletRequest.class);
HttpServletResponse httpServletResponse =
    ResteasyProviderFactory.getContextData(HttpServletResponse.class);

if (!httpServletRequest.isSecure())
{
    try
    {
        httpServletResponse.sendError(HttpServletResponse.SC_FORBIDDEN, "Use HTTPS");
    }
    catch (IOException e)
    {
        throw new WebApplicationException(e);
    }
}

Это решение чисто RESTEasy, и вы можете разместить этот код где угодно до обработки запроса.

Я использовал tapestry-resteasy интеграция и реализация этого с использованием консультантов по обслуживанию гобеленов .

3 голосов
/ 29 июня 2011

Я считаю, что эта конфигурация должна быть не на стороне RESTEasy, а скорее на контейнере сервлетов или веб-сервере.

Например, если вы запускаете Tomcat, в файле server.xml удалите соединитель из порта 8080 и определите один для порта 8443. Так что Tomcat больше не будет принимать http-трафик.

...