2013-05-05 3 views
0

В следующем разделе должны применяться все клиенты для использования соединения https.Как обеспечить подключение https для всех подсетей? JAX-RS JBoss

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

На самом деле происходит то, что только страница index.html обеспечивается ssl. Таким образом, запрос, например: 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>, работающих на подвысоках. Есть ли способ исправить это?

ответ

0

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

<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>, и все будет защищено должным образом. По-моему, это гораздо разумнее!

Смежные вопросы