Проблема с разрешениями базовой аутентификации Tomcat - PullRequest
2 голосов
/ 01 июня 2011

В настоящее время у меня есть веб-сервис, выполняющий некоторую базовую аутентификацию через Tomcat.Я получаю окно логина, чтобы выскочить нормально, и я могу войти в систему с учетными записями, которые я определил в файле tomcat-users.xml.Однако, когда дело доходит до определения разрешений на основе ролей, у меня возникают некоторые проблемы.

В настоящее время у меня есть три роли: менеджер, администратор и пользователь.У меня есть несколько методов, которые должны быть доступны только, скажем, через роль администратора.Я могу войти в систему как мой супер-аккаунт менеджер / администратор / пользователь и видеть все просто отлично, но я могу сделать то же самое, что и обычный пользователь.

Методы определены так:

@Path("/Test")
@RolesAllowed("admin")
public class Test
{
    @GET
    @RolesAllowed("user")
    public methodThatMyUsersCanAcess{}

    @GET
    @Path("/Secure")
    @RolesAllowed("admin")
    public methodThatOnlyAdminsCanAcess{}
}

Я действительно не уверен, как роль «пользователя» сможет получить доступ ко второму методу, но каким-то образом это все же происходит.

Ответы [ 2 ]

1 голос
/ 02 июня 2011

После еще одного исследования я обнаружил, что использование @RolesAllowed ничего не делает в моем коде из-за того, как был настроен мой файл web.xml.Я решил двигаться в направлении настройки аутентификации по пути URI.Это делается путем изменения файла web.xml, чтобы позволить подмножеству пользователей получать доступ к каждому пути под отдельными тегами <security-constraint>.Я нашел свой лучший ресурс для этого здесь: http://www.coderanch.com/t/176095/java-Web-Component-SCWCD/certification/auth-constraint-confusion во втором посте.

0 голосов
/ 27 марта 2012

Ключевым моментом является настройка RolesAllowedResourceFilterFactory в web.xml, как показано ниже:

<servlet> 
    <servlet-name>jersey-servlet</servlet-name> 
    <servlet-class>com.sun.jersey.spi.spring.container.servlet.SpringServlet</servlet-class> 
        <init-param> 
            <param-name>com.sun.jersey.config.property.packages</param-name> 
            <param-value>com.mycompany.mobile.rest</param-value> 
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.config.feature.Trace</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>com.sun.jersey.spi.container.ContainerRequestFilters</param-name>
            <param-value>com.mycompany.mobile.rest.filter.RestSecurityFilter</param-value>
        </init-param>
        <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>
    <load-on-startup>1</load-on-startup> 
</servlet> 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...