Аутентификация пользователя на сервисе REST Джерси

Я разрабатываю приложение REST, которое использует платформу Джерси. Я хотел бы знать, как я могу управлять аутентификацией пользователя. Я искал много мест, и самая близкая статья, которую я нашел, является этим: http://weblogs.java.net/blog/2008/03/07/authentication-jersey.

Однако эта статья может только использоваться с сервером GlassFish и приложенной базой данных. Есть ли так или иначе, что я могу реализовать интерфейс на Джерси и использовать его в качестве фильтра прежде, чем достигнуть требуемого ресурса REST?

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

39
задан cdeszaq 27 November 2013 в 16:42
поделиться

2 ответа

Я успешно использую Spring Security для защиты моего API на основе Джерси. Он имеет подключаемые схемы аутентификации, позволяющие вам позже переключиться с обычной аутентификации на что-то другое. Я не использую Spring вообще, только для обеспечения безопасности.

Вот соответствующая часть из моего web.xml

<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/security-applicationContext.xml,
        /WEB-INF/applicationContext.xml
    </param-value>
</context-param>

<!-- Enables Spring Security -->

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>
        org.springframework.web.filter.DelegatingFilterProxy
    </filter-class>
    <init-param>
        <param-name>targetBeanName</param-name>
        <param-value>springSecurityFilterChain</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>

</filter-mapping>

Вы можете оставить applicationContext.xml пустым ( ). Пример security-applicationContext.xml можно найти здесь

32
ответ дан 27 November 2019 в 02:48
поделиться

Я работаю над чем-то похожим на это. В моей реализации у нас есть внешний интерфейс Apache httpd для обработки базовой аутентификации HTTP, и он просто пересылает все запросы с некоторой информацией заголовка, содержащей пользователя и роли.

Исходя из этого, я работаю над синтаксическим анализом этих частей, используя фильтр сервлетов , чтобы обернуть HttpServletRequest , используя сообщение, которое я нашел на CodeRanch . Это позволяет мне использовать аннотации javax.annotation.security , такие как @RolesAllowed , для каждого ресурса, который я хочу фильтровать. Однако, чтобы заставить все эти части работать, мне пришлось добавить следующее к моему сервлету в web.xml :

<servlet>
  <!-- some other settings and such 
  ... -->
  <init-param>
    <param-name>com.sun.jersey.spi.container.ResourceFilters</param-name>
    <param-value>com.sun.jersey.api.container.filter.RolesAllowedResourceFilterFactory</param-value>
  </init-param>
  ...
</servlet>

Вы можете найти ответ Эрика Варринера на недавний интересный пост: Джерси, Tomcat и аннотации по безопасности

8
ответ дан 27 November 2019 в 02:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: