2012-04-20 2 views
0

Я создал LoggingFilter для Джерси и настроил его правильно в web.xml. Все работает нормально. Когда я делаю «GET», я получаю userPrincipal (request.getUserPrincipal()), но для POST он возвращает null. Я написал несколько служб REST в java 1.4 на Websphere и всегда мог получить доступ к userPrincipal, но на Tomcat/1.6 я получил выше. Я использую Basic Auth. Это Джерси делает это? Или Томкат?Jersey Logging filter ест UserPrincipal для POST

<security-constraint> 
    <web-resource-collection> 
     <web-resource-name>Lookup Resources</web-resource-name> 
     <description>A set of secured resources.</description> 
     <url-pattern>/rest/lookup/*</url-pattern> 
     <http-method>GET</http-method> 
    </web-resource-collection> 
    <auth-constraint> 
     <role-name>DataServ_Lookup</role-name> 
     <role-name>DataServ_Admin</role-name> 
    </auth-constraint> 
    <!-- Comment this out for Dev. It is a MUST for Prod... 
    <user-data-constraint> 
     <transport-guarantee>CONFIDENTIAL</transport-guarantee> 
    </user-data-constraint>--> 

</security-constraint> 
+1

'UserPrincipal' установлен веб-контейнером (не Джерси). Можете ли вы поделиться своим «web.xml» (раздел, относящийся к аутентификации) и «context.xml» (относящийся к клапанам)? Также вы можете анализировать заголовки, отправленные на веб-сервер, используя Firebug, например: если браузер не отправляет информацию аутентификации, 'UserPrincipal' не будет присутствовать. –

+0

Я предполагаю, что, поскольку аутентификация выполняется, что учетные данные были переданы. Или это слишком большое предположение? – markthegrea

ответ

0

Претензии к dma_k за то, что они привели меня к собственному безумию. Как вы можете видеть выше, в POST нет ограничений безопасности!

Мне нужно было добавить: <http-method>POST</http-method>. Doh!

+0

Отлично, что вы нашли решение самостоятельно :) BTW, не указав никаких '', включит все методы. –

0

Почему вы создали свой собственный LoggingFilter? Знаете ли вы, что Джерси включает в себя один из них? Ваш фильтр изменяет запрос каким-либо образом? Попробуйте ввести HttpServletRequest в свой ресурс и получить основную форму - посмотрите, установлен ли он. Если нет, посмотрите, действительно ли ваш запрос содержит основной заголовок auth.

+0

Из регистратора журнала не регистрируется то, что я хочу, и это довольно много. Фильтр не изменяет запрос по-разному для GET или POST. Он устанавливается, как GET. Я никогда не думал о том, чтобы получить заголовок. Я попробую это, хотя мне тоже придется это понять. Спасибо за идею! – markthegrea

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