Подтвердить что ты не робот

Spring Безопасность: как исключить определенные ресурсы?

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

    <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-адресе...

"/небезопасные/**"

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

Я пробовал добавить...

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

Но это приводит к тому, что Websphere выдает ошибку о

Unsupported configuration attributes: [permitAll] 

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

4b9b3361

Ответ 2

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

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

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

Ответ 3

<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/ ** будет неэффективным.

Ответ 4

Try:

<sec:intercept-url pattern="/nonsecure/**" filters="none" />

Ответ 6

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

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

Удачи!