Как обеспечить соединение https для всех подузлов? JAX-RS JBoss

В следующем разделе все клиенты должны использовать соединение https.

<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>

На самом деле происходит только то, что ssl защищает только страницу index.html. Так что запрос вроде: http://localhost/JAX-RS_Service/ перенаправлен на https://localhost/JAX-RS_Service/ и страница index.html отображается. То же самое для http://localhost/JAX-RS_Service/index.htmlНо если я попытаюсь запросить http://localhost/JAX-RS_Service/services/customers/1 перенаправление на https отсутствует, поэтому все данные отправляются в незашифрованном виде по проводам.

То же самое для принудительной аутентификации

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Authenticated customers only</web-resource-name>
        <url-pattern>/services/customers/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>CUST</role-name>
    </auth-constraint>
</security-constraint>

URL-шаблон, как<url-pattern>/services/*</url-pattern> не буду делать работу.

Почему не <url-pattern>/*</url-pattern> работает для перестановок. Есть ли способ это исправить?

1 ответ

Решение

На самом деле я понятия не имею, почему, но следующая конфигурация решила мою проблему.

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

<security-constraint>
    <web-resource-collection>
        <web-resource-name>Authenticated customers only</web-resource-name>
        <url-pattern>/services/customers/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>CUST</role-name>
    </auth-constraint>
    <user-data-constraint>
        <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint>
</security-constraint>

<user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> должен быть добавлен в каждом <security-constraint> иначе это не сработает для JBoss. Интересно то, что для Tomcat вы должны определить <transport-guarantee>CONFIDENTIAL</transport-guarantee> только один раз для <url-pattern>/*</url-pattern> и все надежно закреплено. На мой взгляд, это гораздо разумнее!

Другие вопросы по тегам