Как обеспечить соединение 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>
и все надежно закреплено. На мой взгляд, это гораздо разумнее!