14

Я реализовал Oauth2 в своем приложении для загрузки весны. В моей безопасности-context.xml, у меня есть эти строки -Весенняя безопасность - разрешающий анонимный доступ

<sec:intercept-url pattern="/trusted/**" access="isAnonymous()" /> 
<sec:intercept-url pattern="/**" access="isFullyAuthenticated()" /> 

Я хочу, чтобы все под/доверено быть доступны без аутентификации. Тем не менее, я все еще запрашиваю аутентификацию, когда пытаюсь получить доступ к/доверенным ресурсам (тезисы - ресурсы RESTful).

Я пропустил что-то еще?

[Изменить:] Я запускаю это приложение с экземпляром tomcat с предоставленным экземпляром.

+0

isAnonymous() подразумевает, что у вас настроен анонимный пользователь. Я бы сделал что-то вроде этого:

+0

Stackoverflow собирается наградить кого-то наградой, но я не получил рабочего ответа. – Raj

ответ

5

Вам просто нужно заменить выражение access атрибут доверенных перехватывать и он должен работать:

<sec:intercept-url pattern="/trusted/**" filters="none" /> 
<sec:intercept-url pattern="/**" access="isFullyAuthenticated()" /> 

Хотя так как Spring Security 3.1 уже устарел filters, вы должны использовать http тегов для достижения того же эффекта:

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

<http auto-config='true'> 
    <intercept-url pattern="/**" access="isFullyAuthenticated()" /> 
    <form-login login-page='/login.jsp'/> 
</http> 

You can read more about this here.

+0

Теперь я получаю org.springframework.security.authentication.AuthenticationCredentialsNotFoundException: Объект аутентификации не найден в SecurityContext – Raj

+1

Похоже, что у вас есть еще одна проблема с установкой вашей аутентификации. –

+0

Я смоделировал после https://github.com/skate056/spring-security-oauth2-google ли вы знаете какой-либо другой рабочий пример с поставщиком присяги google и весенней загрузкой? – Raj

0

Конфигурация неправильная. Теперь скажите, что происходит, вы сообщаете Spring безопасности, чтобы разрешить анонимный доступ ко всему под /trusted/**, что в порядке, но затем вы снова рассказываете об этом, чтобы ограничить весь анонимный доступ до /** - это каждый путь в вашем приложении, который, очевидно, ограничивает доступ к /trusted/** также.

Вы должны изменить свою конфигурацию в нечто вроде этого:

<sec:intercept-url pattern="/trusted/**" access="isAnonymous()" /> 
<sec:intercept-url pattern="/secure/**" access="isFullyAuthenticated()" /> 

и он будет работать.

+0

ваш ответ имеет смысл, но затем я получаю это исключение -2015-08-17 20: 10: 30.760 ОШИБКА 18078 --- [io-8080-exec-10] osboot.context.web.ErrorPageFilter: пересылка на ошибку страница из запроса [/ monitor/123] из-за исключения [Объект проверки подлинности не найден в SecurityContext] org.springframework.security.authentication.AuthenticationCredentialsNotFoundException: объект проверки подлинности не найден в SecurityContext – Raj

1
<http> 
<intercept-url pattern="/trusted/**" access="ROLE_USER,ROLE_GUEST" /> 
<intercept-url pattern="/messagePost.htm*" access="ROLE_USER" /> 
<intercept-url pattern="/messageDelete.htm*" access="ROLE_ADMIN" /> 
<anonymous username="guest" granted-authority="ROLE_GUEST" /> 
<remember-me /> 
</http> 

<anonymous username="guest" granted-authority="ROLE_GUEST" />

Вы можете определить роль как ROLE_GUEST и говоря, как то, что делает приведенный выше код. Любой анонимный участник может получить доступ к шаблону URL под ROLE_GUEST

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