Spring Security: как исключить определенные ресурсы? - PullRequest
39 голосов
/ 03 августа 2010

У меня есть следующее определение ...

    <bean id="fsi" class="org.springframework.security.intercept.web.FilterSecurityInterceptor">
    <property name="authenticationManager" ref="authenticationManager"/>
    <property name="accessDecisionManager" ref="httpRequestAccessDecisionManager"/>
    <property name="objectDefinitionSource">
      <sec:filter-invocation-definition-source >
            <sec:intercept-url pattern="/secure/css/**"        access="ROLE_TIER0"/>
            <sec:intercept-url pattern="/secure/images/**"     access="ROLE_TIER0"/>
            <sec:intercept-url pattern="/**"                   access="ROLE_TIER0"/>
      </sec:filter-invocation-definition-source>
    </property>
    </bean>

Я хотел бы иметь ресурсы по этому URL ...

"/ nonSecure / **"

Открыто для всех вызовов, т. Е. Нет безопасности вокруг него.

Я пытался добавить ...

<sec:intercept-url pattern="/nonsecure/**" access="permitAll" />

Но это заставляет Websphere выдать ошибку о

Unsupported configuration attributes: [permitAll] 

Может кто-нибудь сказать мне, как исключить этот URL из безопасности?

Ответы [ 6 ]

84 голосов
/ 21 марта 2011

В весенней безопасности 3.1.x использование filters = "none" не рекомендуется.Вместо этого вы используете несколько <http> тегов, таких как:

<http pattern="/nonsecure/**" security="none"/>

http://static.springsource.org/spring-security/site/docs/3.1.x/reference/springsecurity-single.html#ns-form-and-basic

24 голосов
/ 03 августа 2010

Я думаю, вам нужно добавить тег use-expressions в вашу http конфигурацию в xml безопасности, например:

<http auto-config="true" use-expressions="true">
...
...
</http>

Edit: Ну, я не уверен, какую версию Spring Security вы используете. Я знаю, что это работает на 3.0, но для более старых версий я не уверен.

19 голосов
/ 21 июня 2012
<security:http auto-config='true'>
    <security:intercept-url pattern="/getfeed/**" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
    <security:intercept-url pattern="/**" access="ROLE_USER, ROLE_ADMIN" />
    <security:http-basic />
</security:http>

access = " IS_AUTHENTICATED_ANONYMOUSLY " Это решение.Я нашел его по следующей ссылке http://syntx.io/adding-http-basic-auth-to-restful-services-in-java-and-spring/

Перехваты оцениваются сверху вниз.Если вы напишите это / ** перед / getIntelFeed / **, тогда все сервисы пройдут через / **, и безопасность будет применена ко всем сервисам.В таком случае / getIntelFeed / ** будет неэффективным.

17 голосов
/ 03 августа 2010

Попробуйте:

<sec:intercept-url pattern="/nonsecure/**" filters="none" />
3 голосов
/ 16 апреля 2011

Чтобы иметь возможность использовать выражения, такие как [allowAll], вы должны добавить WebExpressionVoter в AccessDecisionManager

0 голосов
/ 23 марта 2011

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

  1. Если вы используете Spr Sec 3, ответ Gopi будет правильным, если вы хотите включить выражения SpEL (и иметь соответствующие bean-компоненты, которые могутоценивать их тоже настраивал).Это может быть сложно, если вы не используете пространство имен http.
  2. Если у вас настроен соответствующий фильтр для настройки SecurityContext для неаутентифицированных (анонимных) пользователей, тогда задайте role = = IS_AUTHENTICATED_ANONYMOUSLY, IS_AUTHENTICATED_FULLY, IS_AUTHENTEMATED_ иликакая-то их комбинация должна работать.
  3. Если все остальное терпит неудачу, как предложили несколько людей, filters = "none" будет делать то, что вы хотите, но позаботьтесь о том, чтобы вам действительно не понадобилосьчто-либо связанное с Spring Security в коде, лежащем в основе страниц, которые вы отображаете, в противном случае вы можете почесать голову позже.

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...