HTTPS и RESTEasy

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


person c12    schedule 28.06.2011    source источник


Ответы (3)


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

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 и реализовал это с помощью консультанты по работе с гобеленами.

person Dmitry Gusev    schedule 23.05.2013

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

1) Создание файла хранилища ключей. Я использовал 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

person nate_weldon    schedule 26.03.2012

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

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

person Tarlog    schedule 29.06.2011